if-schleifen in excel VBA

  • Excel

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von mottenlogo.

    if-schleifen in excel VBA

    Hallo Leute!



    Ich hab da mal ein Problem für meine Diplomarbeit...

    Ich habe mir Verschiebungen in einem FE-Netz berechnet und möchte nun die Maximalwerte der Verschiebungen in die verschiedenen Koordinatenrichtungen ausgeben. Die Werte werden dann in ein extra Sheet an unterschiedlichen Positionen für die maximalen Verschiebungen gespeichert.

    Jetzt kommt der kritische Part: An manchen Knoten kommt es vor, dass die Verschiebung in x-Richtung maximal wird, in y-Richtung aber minimal. In der if-Schleife wird nur der eine der Werte erkannt und die Schleife geht in die nächste Runde ohne den zweiten Befehl zu überprüfen.



    Was ich jetzt suche ist eine Möglichkeit, dass innerhalb einer If-Schleife, nach dem einer der Parameter erfüllt ist, trotzdem weitergeprüft wird, ob noch an einer anderen Stelle dieser Parameter erfüllt wird.

    Hier noch das Minibeispiel

    Visual Basic-Quellcode

    1. max_value_x=Application.Max(Range(Sheets("LF1").Cells(2,2),Sheets("LF1").Cells(100,2)
    2. max_value_y=Application.Max(Range(Sheets("LF1").Cells(2,3),Sheets("LF1").Cells(100,3)
    3. i=1
    4. while i<100
    5. if Sheets("LF1").Cells(i,2)=max_value_x then
    6. Sheets("Verschiebung").Cells(1,2)=Sheets("LF1").Cells(i,2)
    7. elseif Sheets("LF1").Cells(i,3)=max_value_y then
    8. Sheets("Verschiebung").Cells(2,2)=Sheets("LF1").Cells(i,3)
    9. end if
    10. wend


    Viele Grütze
    Jo - was du dir da zusammenkopiert hast, ist eine ElseIf-Kette, und - wie richtig bemerkt - die prüft nur so lange, bis eine der Bedingungen erfüllt ist. Aber es zwingt dich ja niemand, ElseIf zu verwenden.
    Wenn beide Ifs unabhängig voneinander geprüft werden sollen, dann mach halt 2 einzelne, voneinander unabhängige Ifse hin.

    Visual Basic-Quellcode

    1. Dim wksLf1 As Worksheet, wksSChieb As Worksheet
    2. Set wksLf1 = Sheets("LF1")
    3. Set wksSChieb = Sheets("Verschiebung")
    4. max_value_x=Application.Max(Range(wksLf1.Cells(2,2),wksLf1.Cells(100,2)
    5. max_value_y=Application.Max(Range(wksLf1.Cells(2,3),wksLf1.Cells(100,3)
    6. For i = 1 To 99
    7. If wksLf1.Cells(i, 2) = max_value_x Then
    8. wksSChieb.Cells(1, 2) = wksLf1.Cells(i, 2)
    9. End If
    10. If wksLf1.Cells(i, 3) = max_value_y Then
    11. wksSChieb.Cells(2, 2) = wksLf1.Cells(i, 3)
    12. End If
    13. Next