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 ayto mhpws? :oFor 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 υγ: για την απορια του 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 |