Αυτός είναι ο πλήρης κώδικας. Στην ουσία "διαβάζει" δεδομένα από δυο φύλλα εργασίας (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 και το πρήξιμο, και ευχαριστώ εκ των προτέρων...
