Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-Iteration

Forumthread: VBA-Iteration

VBA-Iteration
25.06.2002 22:48:34
Ernst Dunkel
Hallo

Wer kann mir bei folgendem Problem behilflich sein?

In Zelle A1 wird ein Schätzwert für die Oberflächentemperatur eingegeben.
Zelle B1 errechnet die Oberflächentemperatur anhand hinterlegten Formeln, welche auf A1 zurück greifen.
Zelle A1 muss solange verändert werden, bis sie der Zelle B1 entspricht.

Wer hat eine VBA-Lösung für diese Aufgabe?

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: VBA-Iteration
25.06.2002 23:50:00
Ramses
Hallo Ernst,

Da ich davon ausgehe dass deine Formel in B1 irgendwelche Multiplikationen oder Divisionen beinhaltet, ist dies ein aussichtsloses unterfangen.

Aber wenn du willst, kannst du das mal probieren

Es ist davon auszugehen dass sich dein Rechner dabei aufhängt, .. dann bitte mit "Ctrl" und "Break" das Makro abbrechen.

Gruss Rainer

Anzeige
Re: VBA-Iteration = Endlosscheife
26.06.2002 00:08:15
Nike
Hi,
jo, Ramses hat Recht, wird wohl in der Form in ner
Endlosschleife enden, nimm lieber den Solver dafür...
oder gib das zu vergleichende Ergebnis jeweils in
ner anderen Zelle aus...

Bye

Nike

Re: VBA-Iteration
26.06.2002 07:18:04
Ernst Dunkel
Hallo Rainer
Vielen Dank für Deine Bemühungen.
Das Ding funktioniert bestens, wenn man B1 auf
zwei Kommastellen rundet. Man könnte auch den Code
erweitern mit der Anweisung die Schleife soll z.B.
10 mal durch laufen und dann abbrechen.

Sub TempEnd()
Do Until Range("A1") = Range("B1")
Range("A1") = Range("B1")
Loop
End Sub

Anzeige
Limitierte Schleife
26.06.2002 07:59:43
Ramses
Hallo Ernst,

das geht natürlich auch:

Gruss Rainer

Re: VBA-Iteration = Endlosscheife
26.06.2002 08:21:59
Harald Kapp
Hallo,
Also mit dem Solver braucht man m.E. einen Zwischenschritt: Man definiert eine Zielzelle, z.B. C1 mit der Formel =A1-B1. Dann setzt man den Solver (oder die Zielwertsuche) darauf an mit dem Zielwert C1=0 und der veränderbaren Zelle A1.

Wenn man Spaß daran hat, kann man das Problem auch mittels der "Regula Falsi" (http://www.unibw-hamburg.de/WWEB/math/uebe/Lexikon/C/Computation-Bsp1.pdf)durchprogrammieren:

Nur so als Anregung für lange Nächte :-)

Gruß Harald

Anzeige
Re: Dank an Nike und Harald,
26.06.2002 20:46:02
Ernst Dunkel
Hallo Harald

Vielen Dank für Deine Bemühungen

Die Lösung nach Regula-Falsi ist sehr gut! Ich hätte bestenfalls das Newton'sche Näherungsverfahren anwenden können
x1=x0- [f(x0) / f'(x0)], darin ist f'(x) die erste Ableitung der Funktion f(x).

Hallo Rainer
Deine Lösung ist für mich die einfachste, vielen Dank.

Gruss Ernst


Anzeige
;
Anzeige

Infobox / Tutorial

VBA-Iteration in Excel effektiv nutzen


Schritt-für-Schritt-Anleitung

Um eine Iteration in Excel mit VBA zu implementieren, kannst du die folgende Schritt-für-Schritt-Anleitung nutzen:

  1. Öffne Excel und erstelle ein neues Arbeitsblatt.

  2. Gib in Zelle A1 deinen Schätzwert für die Oberflächentemperatur ein.

  3. In Zelle B1 gib eine Formel ein, die auf A1 zurückgreift, z.B. =A1*2 (oder eine andere passende Formel).

  4. Drücke Alt + F11, um den VBA-Editor zu öffnen.

  5. Füge ein neues Modul hinzu:

    • Rechtsklick auf "VBAProject (DeinArbeitsblattname)" > Einfügen > Modul.
  6. Kopiere den folgenden Code in das Modul:

    Sub TempEnd()
       Dim i As Integer
       i = 0
       Do Until Range("A1") = Range("B1") Or i >= 10
           Range("A1") = Range("B1")
           i = i + 1
       Loop
    End Sub
  7. Schließe den VBA-Editor und kehre zu Excel zurück.

  8. Drücke Alt + F8, wähle TempEnd aus und klicke auf "Ausführen".

Dieser VBA-Code implementiert eine einfache VBA-Iteration, die den Wert in A1 so lange anpasst, bis er dem Wert in B1 entspricht oder bis eine maximale Anzahl an Iterationen erreicht ist.


Häufige Fehler und Lösungen

  • Endlosschleife: Wenn der Code nicht stoppt, kann dies an einer fehlerhaften Formel in B1 liegen. Stelle sicher, dass die Formel korrekt ist und keine zyklischen Referenzen enthält.

  • Rechner hängt sich auf: Wenn du eine Endlosschleife hast, kannst du das Makro mit Ctrl + Break abbrechen.

  • Falsche Ergebnisse: Überprüfe die Rundung der Ergebnisse in B1. Eine Rundung auf zwei Dezimalstellen kann helfen, genauere Werte zu erhalten.


Alternative Methoden

Falls du eine andere Methode zur Durchführung der Iteration in Excel verwenden möchtest, kannst du den Excel-Solver nutzen:

  1. Definiere eine Zielzelle, z.B. C1 mit der Formel =A1-B1.
  2. Gehe zu Daten > Solver.
  3. Setze das Ziel auf C1=0 und wähle A1 als veränderbare Zelle.

Eine weitere Methode ist die Anwendung der Regula Falsi, um Näherungsverfahren zu implementieren. Das Vorgehen kann komplex sein, aber es bietet eine interessante Alternative zur VBA-Iteration.


Praktische Beispiele

Hier ist ein Beispiel, wie eine VBA for Schleife für eine nächste Iteration aussehen könnte:

Sub BeispielIteration()
    Dim i As Integer
    For i = 1 To 10
        Range("A1").Value = Range("A1").Value + 1
        ' Hier kannst du eine Bedingung hinzufügen
    Next i
End Sub

Dieses Beispiel zeigt, wie du eine einfache Iteration mit einer for Schleife in VBA durchführen kannst, um Werte in Zelle A1 zu erhöhen.


Tipps für Profis

  • Verwende Application.ScreenUpdating = False zu Beginn deines Codes, um das Flackern des Bildschirms zu vermeiden, und setze es am Ende wieder auf True.

  • Teste deine Formeln in Excel, bevor du sie in deinen VBA-Code einfügst, um sicherzustellen, dass sie wie gewünscht funktionieren.

  • Nutze Debugging-Tools im VBA-Editor, um deinen Code schrittweise zu überprüfen und Fehler zu identifizieren.


FAQ: Häufige Fragen

1. Wie kann ich die Iteration abbrechen?
Du kannst die Iteration abbrechen, indem du Ctrl + Break drückst, wenn das Makro läuft.

2. Funktioniert das auch in älteren Excel-Versionen?
Ja, die beschriebenen Methoden zur VBA-Iteration sind in den meisten Excel-Versionen verfügbar, sollten jedoch auf aktuellen Versionen getestet werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige