THMMY.gr

Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα => Windows 7, Vista , XP, 9x, 2000, Office => Topic started by: pocitician on March 18, 2016, 12:04:28 pm



Title: Απορία για vba σε Microsoft Excel
Post by: pocitician on March 18, 2016, 12:04:28 pm
Έχω γράψει έναν κώδικα vba σε αρχείο Microsoft Excel και ενώ όταν πατάω το [play] δεν μου βγάζει ότι έχω κάποιο πρόβλημα στον κώδικα (δηλαδή ότι έγραψα κάτι λάθος), φορτώνει, φορτώνει και τελικά "κολλάει" και δεν συμπληρώνει ποτέ τα φύλλα εργασίας όπως θα έπρεπε... :(

Γνωρίζει κανείς γιατί συμβαίνει αυτό; Δηλαδή γιατί αργεί να τρέξει τον κώδικα vba με αποτέλεσμα τελικά ποτέ να μην τον τρέχει και απλά να δείχνει ότι φορτώνει ώσπου κολλάει;

Έψαξα μήπως έχω βάλει κάποια ατέρμονα επανάληψη, που δεν τελειώνει ποτέ, αλλά δεν βρήκα κάποιο λάθος.

Ευχαριστώ εκ των προτέρων!


Title: Re: Απορία για vba σε Microsoft Excel
Post by: Obarack Sand on March 18, 2016, 20:12:07 pm
Ένα μικρό πραγματάκι που έχω κάνει εγώ συνήθως κάνει 5-10" να τρέξει, οπότε αν έχεις κάνει κάτι βαρύ ίσως να φταίει απλά αυτό. Επίσης νομίζω έχει διαφορές από 2003 σε 2007 και πιθανότατα στα πιο καινούρια Office, οπότε έχε το νου σου σε τυχόν λεπτομέρειες που μπορεί να προκαλούν λάθη, π.χ. ελαφρώς διαφορετική σύνταξη στην έκδοση που χρησιμοποιείς απ' αυτή που έβαλες.
Παίζει επίσης να δώσεις κάνα τμήμα του κώδικα μπας και βοηθήσει περισσότερο να δούμε τι παίζει;


Title: Re: Απορία για vba σε Microsoft Excel
Post by: Katarameno on March 18, 2016, 23:36:41 pm
Visual Basic for Applications? Δεν είναι εδώ και χρόνια discontinued?  Εδώ σταμάτησαν την υποστήριξη της Visual Basic 6, την VBA  θα συνεχίσουν να υποστηρίζουν? Σε κάθε περίπτωση αν δε μπορούμε να δούμε τον κώδικα, δε μπορούμε και να καταλάβουμε τι κάνεις για να βρούμε και που κάνεις το λαθάκι...


Title: Re: Απορία για vba σε Microsoft Excel
Post by: pocitician on March 21, 2016, 11:42:45 am
Sub Button17()

Dim number0 As Integer, number1 As Integer, numberhourly As Integer
number0 = 2
number1 = 5
numberhourly = 2





Do Until (number1 > 43)

If ThisWorkbook.Sheets("ThermalUnitsData").Cells(number1, 42).Value = "One Block up to Pmax with a MAR" Then


Dim i As Integer, help As Integer
help = 0
i = 2

Do While (help = 0)
If ThisWorkbook.Sheets("AllThermalOffers").Cells(i, 1).Value = ThisWorkbook.Sheets("ThermalUnitsData").Cells(number1, 3).Value Then
help = i
End If
i = i + 24
Loop



Dim min As Integer
min = ThisWorkbook.Sheets("AllThermalOffers").Cells(help, 4).Value

For i = help + 1 To help + 23
If ThisWorkbook.Sheets("AllThermalOffers").Cells(i, 4) < min Then
min = ThisWorkbook.Sheets("AllThermalOffers").Cells(i, 4)
End If
Next


Dim MAR As Integer
MAR = ThisWorkbook.Sheets("AllThermalOffers").Cells(help, 3).Value / min


ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 1).Value = "Block Order"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 2).Value = "Supply or Demand"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 3).Value = "Block Order Number"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 4).Value = "Node"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 5).Value = "Area"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 6).Value = "Linked"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 7).Value = "Linked BO"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 8).Value = "Exclusive Group"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 9).Value = "Profile or Regular"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 10).Value = "Minimum Acceptance Ratio"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 11).Value = "Submitted price [€/MWh]"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 12).Value = "Submitted quantity [€/MW]"

Dim j As Integer
j = 1
For i = 13 To 36
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, i).Value = "T" & j
j = j + 1
Next


number0 = number0 + 1

ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 1).Value = ThisWorkbook.Sheets("ThermalUnitsData").Cells(number1, 3).Value 'ÂÜæïõìå ôï üíïìá ôçò ìïíÜäáò2
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 2).Value = 1
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 3).Value = 1
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 6).Value = 0
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 7).Value = 0
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 8).Value = 0
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 9).Value = 2
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 10).Value = MAR

Dim submittedprice As Integer, submittedquantity As Integer, pricehelp As Integer

sumbmittedprice = 0
pricehelp = 0

For i = 6 To 15
submittedprice = submittedprice + ThisWorkbook.Sheets("AllThermalOffers").Cells(help, i).Value * ThisWorkbook.Sheets("AllThermalOffers").Cells(help, i + 1).Value
pricehelp = pricehelp + ThisWorkbook.Sheets("AllThermalOffers").Cells(help, i).Value
Next


submittedprice = submittedprice / pricehelp
submittedquantity = min

ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 11).Value = submittedprice
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 12).Value = submittedquantity

For i = 13 To 36
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, i).Value = 1
Next


ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, 1).Value = "Offer"
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, 2).Value = "Hour"
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, 14).Value = "Offer"
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, 15).Value = "Hour"

j = 1
For i = 3 To 12
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, i).Value = "sb" & j
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, i + 12).Value = "sb" & j
j = j = 1
Next

For i = numberhourly + 1 To numberhourly + 23
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(i, 1).Value = "S" & number1 - 4 'Ãéá ôçí ðñþôç ìïíÜäá ãéá ðáñÜäåéãìá åßíáé S1 êïê!
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(i, 2).Value = "T" & j
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(i, 14).Value = "S" & number1 - 4
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(i, 15).Value = "T" & j
j = j + 1
Next

Dim numberhelp As Integer
numberhelp = numberhourly + 1


For i = help To i = help + 23
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhelp, 16).Value = ThisWorkbook.Sheets("AllThermalOffers").Cells(i, 4).Value - min 'Ç ðïóüôçôá
numberhelp = numberhelp + 1
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhelp, 3).Value = submittedprice + 0.001 'Ç ôéìÞ!
numberhelp = numberhelp + 1
Next



End If

number1 = number1 + 1
number0 = number0 + 2
numberhourly = numberhourly + 26

Loop

Αυτό είναι ένα μέρος το κώδικα. Ενώ δηλαδή δεν μου "εμφανίζει" κάποια λάθη στον κώδικα, όποτε πάω να τον τρέξω, κολλάει και δεν τον τρέχει ποτέ

Any help?

(χρησιμοποίησα excel 2007 αλλά οι εντολές είναι excel 2010, έψαξα για διαφορές μεταξύ 2007 και 2010 αλλά δεν ήταν κάτι το ιδιαίτερο, απ' αυτά που βρήκα τουλάχιστον)

Ευχαριστώ εκ των προτέρων





Title: Re: Απορία για vba σε Microsoft Excel
Post by: pocitician on March 21, 2016, 13:32:37 pm
Μου εμφανίζει το παρακάτω πρόβλημα :(


Title: Re: Απορία για vba σε Microsoft Excel
Post by: Αιμιλία η φτερωτή χελώνα on March 21, 2016, 13:43:19 pm
j = 1
For i = 3 To 12
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, i).Value = "sb" & j
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, i + 12).Value = "sb" & j
j = j = 1
Next
ayto mhpws? :o

υγ: για την απορια του Katarameno, απ οσο ξερω σε τωρινα μεταπτυχιακα πολιτικων μηχανικων κανουν VBA. Οποτε, οχι.


Title: Re: Απορία για vba σε Microsoft Excel
Post by: pocitician on March 21, 2016, 13:46:22 pm
Oh yes, αλλά και πάλι το overflow θέμα δεν λύθηκε :(


Title: Re: Απορία για vba σε Microsoft Excel
Post by: pocitician on March 22, 2016, 19:53:11 pm
Αυτός είναι ο πλήρης κώδικας. Στην ουσία "διαβάζει" δεδομένα από δυο φύλλα εργασίας (ThermalUnitsData και AllThermalOffers) και "γράφει" στα ThermalBlockOffers και ThermalHourlyOffers φύλλα εργασίας. Αλλά όποτε το τρέχω "κολλάει"...

Υ.Γ.: Τα αλαμπουρνέζικα που εμφανίζονται είναι σχόλια για την κάθε εντολή

Sub Offers()

Dim number0 As Integer, number1 As Integer, numberhourly As Integer
number0 = 2
number1 = 5
numberhourly = 2





Do While (number1 >= 5 & number1 <= 43)

If ThisWorkbook.Sheets("ThermalUnitsData").Cells(number1, 42).Value = "One Block up to Pmax with a MAR" Then


Dim i As Integer, help As Integer
help = 0
i = 2

Do While (help = 0)
If ThisWorkbook.Sheets("AllThermalOffers").Cells(i, 1).Value = ThisWorkbook.Sheets("ThermalUnitsData").Cells(number1, 3).Value Then
help = i
End If
i = i + 24
Loop

Dim min As Integer
min = ThisWorkbook.Sheets("AllThermalOffers").Cells(help, 4).Value

For i = help + 1 To help + 23
If ThisWorkbook.Sheets("AllThermalOffers").Cells(i, 4) < min Then
min = ThisWorkbook.Sheets("AllThermalOffers").Cells(i, 4)
End If
Next

Dim MAR As Integer
MAR = ThisWorkbook.Sheets("AllThermalOffers").Cells(help, 3).Value / min



ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 1).Value = "Block Order"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 2).Value = "Supply or Demand"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 3).Value = "Block Order Number"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 4).Value = "Node"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 5).Value = "Area"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 6).Value = "Linked"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 7).Value = "Linked BO"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 8).Value = "Exclusive Group"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 9).Value = "Profile or Regular"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 10).Value = "Minimum Acceptance Ratio"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 11).Value = "Submitted price [€/MWh]"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 12).Value = "Submitted quantity [€/MW]"

Dim j As Integer
j = 1
For i = 13 To 36
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, i).Value = "T" & j
j = j + 1
Next

number0 = number0 + 1

ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 1).Value = ThisWorkbook.Sheets("ThermalUnitsData").Cells(number1, 3).Value 'ÂÜæïõìå ôï üíïìá ôçò ìïíÜäáò2
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 2).Value = 1
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 3).Value = 1
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 6).Value = 0
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 7).Value = 0
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 8).Value = 0
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 9).Value = 2
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 10).Value = MAR

Dim submittedprice As Integer, submittedquantity As Integer, pricehelp As Integer

sumbmittedprice = 0
pricehelp = 0

For i = 6 To 15
submittedprice = submittedprice + ThisWorkbook.Sheets("AllThermalOffers").Cells(help, i).Value * ThisWorkbook.Sheets("AllThermalOffers").Cells(help, i + 1).Value
pricehelp = pricehelp + ThisWorkbook.Sheets("AllThermalOffers").Cells(help, i).Value
Next

submittedprice = submittedprice / pricehelp
submittedquantity = min

ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 11).Value = submittedprice
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 12).Value = submittedquantity

For i = 13 To 36
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, i).Value = 1
Next

ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, 1).Value = "Offer"
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, 2).Value = "Hour"
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, 14).Value = "Offer"
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, 15).Value = "Hour"

j = 1
For i = 3 To 12
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, i).Value = "sb" & j
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, i + 12).Value = "sb" & j
j = j + 1
Next

For i = numberhourly + 1 To numberhourly + 23
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(i, 1).Value = "S" & number1 - 4
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(i, 2).Value = "T" & j
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(i, 14).Value = "S" & number1 - 4
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(i, 15).Value = "T" & j
j = j + 1
Next

Dim numberhelp As Integer
numberhelp = numberhourly + 1

For i = help To i = help + 23
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhelp, 16).Value = ThisWorkbook.Sheets("AllThermalOffers").Cells(i, 4).Value - min 'Ç ðïóüôçôá
numberhelp = numberhelp + 1
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhelp, 3).Value = submittedprice + 0.001
numberhelp = numberhelp + 1
Next



number1 = number1 + 1
number0 = number0 + 2
numberhourly = numberhourly + 26

End If





If ThisWorkbook.Sheets("ThermalUnitsData").Cells(number1, 42).Value = "One block at MSG and linked blocks up to Pmax" Then


Dim i1 As Integer
Dim help1 As Integer
help1 = 0
i1 = 2

Do While (help1 = 0)
If ThisWorkbook.Sheets("AllThermalOffers").Cells(i1, 1).Value = ThisWorkbook.Sheets("ThermalUnitsData").Cells(number1, 3).Value Then
help1 = i1
End If
i1 = i1 + 24
Loop


ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 1).Value = "Block Order"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 2).Value = "Supply or Demand"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 3).Value = "Block Order Number"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 4).Value = "Node"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 5).Value = "Area"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 6).Value = "Linked"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 7).Value = "Linked BO"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 8).Value = "Exclusive Group"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 9).Value = "Profile or Regular"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 10).Value = "Minimum Acceptance Ratio"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 11).Value = "Submitted price [€/MWh]"
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 12).Value = "Submitted quantity [€/MW]"

number0 = number0 + 1

ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 1).Value = ThisWorkbook.Sheets("ThermalUnitsData").Cells(number1, 3).Value 'ÂÜæïõìå ôï üíïìá ôçò ìïíÜäáò2
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 2).Value = 1
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 3).Value = 1
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 6).Value = 0
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 7).Value = 0
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 8).Value = 0
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 9).Value = 2
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 10).Value = 1

Dim submittedprice1 As Integer, submittedquantity1 As Integer

submittedprice1 = (((ThisWorkbook.Sheets("AllThermalOffers").Cells(help1, 6).Value * ThisWorkbook.Sheets("AllThermalOffers").Cells(help1, 7).Value) + ThisWorkbook.Sheets("AllThermalOffers").Cells(help1, 9).Value * (ThisWorkbook.Sheets("AllThermalOffers").Cells(help1, 3).Value - ThisWorkbook.Sheets("AllThermalOffers").Cells(help1, 8).Value)) / ThisWorkbook.Sheets("AllThermalOffers").Cells(help1, 3).Value)


submittedquantity1 = ThisWorkbook.Sheets("AllThermalOffers").Cells(help1, 3).Value

ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 11).Value = submittedprice1
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0, 12).Value = submittedquantity1


Dim MSG As Integer, sum As Integer, j1 As Integer

MSG = ThisWorkbook.Sheets("AllThermalOffers").Cells(help1, 3).Value
sum = 0
i1 = 2
j1 = 7

Do While (sum < ThisWorkbook.Sheets("AllThermalOffers").Cells(help, 4).Value)
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0 + 1, 1).Value = "BO" & i1
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0 + 1, 2).Value = 1
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0 + 1, 3).Value = i
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0 + 1, 6).Value = 1
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0 + 1, 7).Value = 1
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0 + 1, 8).Value = 0
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0 + 1, 9).Value = 1
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0 + 1, 10).Value = 1 'Ôï MAR åßíáé 1!
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0 + 1, 11).Value = ThisWorkbook.Sheets("AllThermalOffers").Cells(help1, j1).Value 'Ôçí ðñþôç ãéá ðáñÜäåéãìá èá åßíáé ç ôéìÞ P1 êïê!
ThisWorkbook.Sheets("ThermalBlockOffers").Cells(number0 + 1, 12).Value = ThisWorkbook.Sheets("AllThermalOffers").Cells(help1, j1 - 1).Value - ThisWorkbook.Sheets("AllThermalOffers").Cells(help1, j1 + 1).Value 'Ç ðïóüôçôá åßíáé ç äéáöïñÜ ôùí MW1-MW2 ãéá ðáñÜäåéãìá!
sum = sum + MSG + (ThisWorkbook.Sheets("AllThermalOffers").Cells(help1, j1 - 1).Value - ThisWorkbook.Sheets("AllThermalOffers").Cells(help1, j1 + 1).Value)
i1 = i1 + 1
j1 = j1 + 1
Loop

Dim hourlyquantity1 As Integer
hourlyquantity1 = ThisWorkbook.Sheets("AllThermalOffers").Cells(help1, 4).Value - sum 'Pmax - sum

If hourlyquantity1 > 0 Then

ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, 1).Value = "Offer"
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, 2).Value = "Hour"
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, 14).Value = "Offer"
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, 15).Value = "Hour"

j1 = 1
For i1 = 3 To 12
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, i1).Value = "sb" & j1
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhourly, i1 + 12).Value = "sb" & j1
j = j  + 1
Next

For i1 = numberhourly + 1 To numberhourly + 23
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(i1, 1).Value = "S" & number1 - 4
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(i1, 2).Value = "T" & j1
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(i1, 14).Value = "S" & number1 - 4
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(i1, 15).Value = "T" & j1
j1 = j1 + 1
Next

Dim numberhelp1 As Integer
numberhelp1 = numberhourly + 1

For i1 = help1 To i1 = help1 + 23
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhelp1, 16).Value = hourlyquantity
numberhelp1 = numberhelp1 + 1
ThisWorkbook.Sheets("ThermalHourlyOffers").Cells(numberhelp1, 3).Value = ThisWorkbook.Sheets("AllThermalOffers").Cells(help1, j1).Value
numberhelp1 = numberhelp1 + 1
Next

End If


number1 = number1 + 1
number0 = number0 + 2
numberhourly = numberhourly + 26

End If

Loop

End Sub



Sorry για το πολύ info και το πρήξιμο, και ευχαριστώ εκ των προτέρων...  :( :( :(




Title: Re: Απορία για vba σε Microsoft Excel
Post by: Obarack Sand on March 23, 2016, 02:04:00 am
Είσαι σίγουρος πως δεν είναι πιο εύκολο/βολικό/απλό να χειριστείς τα δεδομένα αυτά με κάποιο άλλο πρόγραμμα εκτός excel;
R ή/και Matlab νομίζω θα βόλευαν.


Title: Re: Απορία για vba σε Microsoft Excel
Post by: pocitician on March 23, 2016, 13:20:09 pm
Η "απαίτηση" ήταν να γίνουν σε vba excel...  :-\


Title: Re: Απορία για vba σε Microsoft Excel
Post by: Obarack Sand on March 23, 2016, 14:22:33 pm
Δε βοηθάει ιδιαίτερα, αλλά έπρεπε:

Η "απαίτηση" ήταν να γίνουν σε vba excel...  :-\

(http://figarodigital.co.uk/wp-content/uploads/2015/10/3.jpg)


Title: Re: Απορία για vba σε Microsoft Excel
Post by: pocitician on March 23, 2016, 15:46:54 pm
That helped me a lot!  ;D ;D ;D ;D


Title: Re: Απορία για vba σε Microsoft Excel
Post by: Katarameno on April 01, 2016, 02:09:17 am
Δεν μπορείς να το τρέξεις γραμμή γραμμή με breakpoint? Run until ή step over κτλ ή άλλο τρόπο για να δεις που ακριβώς σου χτυπάει?

Η VBA φυσικά και υπάρχει ακόμα Αιμιλία, άλλο όμως υπάρχει και άλλο υποστηρίζεται επίσημα από την Microsoft.

Visual Basic for Applications (VBA) is an implementation of Microsoft's discontinued event-driven programming language, Visual Basic 6, and its associated integrated development environment (IDE).

As of July 1, 2007, Microsoft no longer offers VBA distribution licenses to new customers. Microsoft intended to add .NET-based languages to the current version of VBA ever since the release of the .NET Framework,[2] of which versions 1.0 and 1.1 included a scripting runtime technology named Script for the .NET Framework.[3] Visual Studio .NET 2002 and 2003 SDK contained a separate scripting IDE called Visual Studio for Applications (VSA) that supported VB.NET.[4][5][6]

https://en.wikipedia.org/wiki/Visual_Basic_for_Applications


Title: Re: Απορία για vba σε Microsoft Excel
Post by: Katarameno on April 01, 2016, 12:49:36 pm
Γενικά VB/VBA δεν ξέρω και δε μου άρεζε και ποτέ (ειδικά το μπάχαλο με τα είδη μεταβλητών) αλλά αυτό μου φαίνεται κάπως :

Dim MAR As Integer
MAR = ThisWorkbook.Sheets("AllThermalOffers").Cells(help, 3).Value / min

Εδώ κάνεις διαίρεση δηλαδή? Και πως το ορίζεις ως integer το αποτέλεσμα?

Το ίδιο και εδώ :
Dim submittedprice As Integer, submittedquantity As Integer, pricehelp As Integer

sumbmittedprice = 0
pricehelp = 0
.....
submittedprice = submittedprice / pricehelp


Title: Re: Απορία για vba σε Microsoft Excel
Post by: pocitician on April 01, 2016, 12:56:35 pm
Το είχα βρει το πρόβλημα τελικά. Thanks bro! Μου εμφάνιζε πρόβλημα με την εξωτερική While-Until και τελικά την αντικατέστησα με μια if και λύθηκε το πρόβλημα!  :)


Title: Re: Απορία για vba σε Microsoft Excel
Post by: Katarameno on April 01, 2016, 13:05:12 pm
Και δε μιλάς ε?  ::)  Καλάααα :P
Γενικά και μένα κάποτε μου είχαν πει να κάνω κάτι σε VBA και τους απάντησα : "Πείτε μου εσείς τι θέλετε να γίνεται και θα το κοιτάξω" και το έκανα με Delphi. Δεν ξαναάκουσα τη λέξη VBA.


Title: Re: Απορία για vba σε Microsoft Excel
Post by: Katarameno on April 01, 2016, 13:10:56 pm
υγ: για την απορια του Katarameno, απ οσο ξερω σε τωρινα μεταπτυχιακα πολιτικων μηχανικων κανουν VBA. Οποτε, οχι.
Oι πολιτικοί μηχανικοί να πάνε να ρίξουν τίποτα μπετά και να συνεχίζουν να γράφουν σε ότι θέλουν καμιά εφαρμογή που σταματάει την μπετονιέρα όταν γίνει το χαρμάνι   ;D .Χεστήκαμε τι κάνουν.  :P