Makro Schleife Zahlenreihe um 1 aufaddieren

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Makro Schleife Zahlenreihe um 1 aufaddieren

Beitrag 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
LO25.2… debian 13( trixie ) auf Raspberry5 8GB (ARM64)
LO25.8… flatpak debian 13( trixie ) auf Raspberry5 8GB (ARM64)
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Makro Schleife Zahlenreihe um 1 aufaddieren

Beitrag 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
LO25.2… debian 13( trixie ) auf Raspberry5 8GB (ARM64)
LO25.8… flatpak debian 13( trixie ) auf Raspberry5 8GB (ARM64)
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Makro Schleife Zahlenreihe um 1 aufaddieren

Beitrag 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:

Code: Alles auswählen

If .getCellByPosition(54, 26).Value = 1
Karo
LO25.2… debian 13( trixie ) auf Raspberry5 8GB (ARM64)
LO25.8… flatpak debian 13( trixie ) auf Raspberry5 8GB (ARM64)
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Makro Schleife Zahlenreihe um 1 aufaddieren

Beitrag 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...
For a = 0 To 37
  • For b = 0 To 37
    • For c = 0 To 37
      • For d = 0 To 37
        • For e = 0 To 37
          • For f = 0 To 37


...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 :lol:



Karo
LO25.2… debian 13( trixie ) auf Raspberry5 8GB (ARM64)
LO25.8… flatpak debian 13( trixie ) auf Raspberry5 8GB (ARM64)
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro Schleife Zahlenreihe um 1 aufaddieren

Beitrag 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
Antworten