Seite 2 von 2
Re: Makro Schleife Zahlenreihe um 1 aufaddieren
Verfasst: Di, 10.04.2012 11:34
von Karolus
Hallo
Falls die Summe per Tabellenformel ermittelt wird, was ist denn wenn Du nach dem .setDataArray() jeweils eine Pause einlegst (10...100 ms)?
Sobald ich versuche
während der Iteration eine Ausgabe ins Tabellenblatt zu machen, blockiert der Prozess ( keinerlei sichtbare Aktualisierungen

) auch nicht wenn ich eine Pause einbaue.
Ich versuch jetzt nochmal eine Iteration in Einzelschritten in Verbindung mit einem 'modifyListener'.
Karo
Re: Makro Schleife Zahlenreihe um 1 aufaddieren
Verfasst: Di, 10.04.2012 12:52
von Karolus
Hallo
@Stephan
Dein Basiccode läuft in modifizierter Form etwa 35 sec bis zur Bereichssumme 100.
Code: Alles auswählen
Sub Finde_Kombination()
With ThisComponent.Sheets().GetByName("Tabelle1")
For a = 0 To 37
.getCellByPosition(1, 1).Value = a 'B2
For b = 0 To 37
.getCellByPosition(2, 1).Value = b 'C2
For c = 0 To 37
.getCellByPosition(3, 1).Value = c 'D2
For d = 0 To 37
.getCellByPosition(4, 1).Value = d 'E2
For e = 0 To 37
.getCellByPosition(5, 1).Value = e 'F2
For f = 0 To 37
.getCellByPosition(6, 1).Value = f 'G2
If .getCellByPosition(7,1 ).Value = 100 Then 'BC27
Msgbox "Passende Werte gefunden"
Exit Sub
End If
Next f
Next e
Next d
Next c
Next b
Next a
End With
End Sub
Der dazu analoge Code in Python benötigt gerademal 5sec weniger.
Code: Alles auswählen
import datetime
def main():
doc = context.getDocument()
sheets = doc.getSheets()
sheet = sheets.getByIndex(0)
cell = sheet.getCellByPosition
print datetime.datetime.now()
for a in range(38):
cell(0,0).setValue( a )
for b in range(38):
cell(1,0).setValue( b )
for c in range(38):
cell(2,0).setValue( c )
for d in range(38):
cell(3,0).setValue( d )
for e in range(38):
cell(4,0).setValue( e )
for f in range(38):
cell(5,0).setValue( f )
if cell(6,0).getValue() == 100:
print datetime.datetime.now()
return
Auch in der Form findet keine
sichtbare Aktualisierung statt, die Bereichssumme wird aber offenbar registriert.
Karo
Re: Makro Schleife Zahlenreihe um 1 aufaddieren
Verfasst: Mi, 11.04.2012 09:05
von Karolus
Hallo
Fehlermeldung nach der Kalmmer in der die 38 steht.
Daraus schliesse ich das du
Python-code in der
Basic-Ide ausführen möchtest - das geht nicht. Nimm den Code von Stephan oder die Basic - Variante*** die ich gepostet habe.
***ändere die If...zeile zurück auf:
Karo
Re: Makro Schleife Zahlenreihe um 1 aufaddieren
Verfasst: Mi, 11.04.2012 11:02
von Karolus
Hallo
Wenn mir der PC ma abschmiert und ich bei ner höheren Ziffernfolge wieder einsteigen möchte, muss ich das im Makro ändern ?
Ja, ändere die jeweilige 0 in den Zeilen...
...um, in den Wert der an der Stelle erreicht wurde -
hoffentlich klappt das zwischenspeichern während des Makrolaufs !!
edit: !stop! du kannst nur die höchstliegende erreichte Zahl > 0 anpassen - in den Schleifen darunter werden ja wieder alle Zahlen gebraucht
edit 2: Immer noch Quatsch - Du kannst lediglich die For
a ..schleife anpassen falls der Code jemals dort bei einem Wert > 0 ankommt
Karo
Re: Makro Schleife Zahlenreihe um 1 aufaddieren
Verfasst: Mi, 11.04.2012 12:16
von Stephan
Ich bin Euch echt sehr sehr dankbar für die Hilfe und die Geduld die ihr mir entgegengebracht habt.
Und wie leicht wäre es für Dich gewesen diese DAnkbarkeit nicht nur als Lippenbekenntnis abzulegen sondern ganz einfach der geäußerten Bitte nachuzukommen die Formeln zur Verfügung zu stellen, die zumindest mich durchaus interesiert hätten - aber stimmt, Du hast ja nun was Du brauchtest und damit haben die Mohren ihre Schuldigkeit getan.
Stephan