Microsoft Excel

Herbers Excel/VBA-Archiv

wenn - Formel als Makro | Herbers Excel-Forum


Betrifft: wenn - Formel als Makro von: meixner
Geschrieben am: 17.11.2009 21:50:38

Hallo zusammen,

möchte untere Wenn - Formel als Makro formulieren. Kann mir jemand dabei helfen wie das funktioniert.

Vielen Dank.
Dani

=WENN(ODER(A8=1;A8=2;A8=3;A8=4;A8=5;A8=6;A8=7;);0;RUNDEN((K8*H8/Q8)/O8;))

  

Betrifft: siehe Select Case Anweisung owT von: Rudi Maintaire
Geschrieben am: 17.11.2009 22:18:39




  

Betrifft: AW: wenn - Formel als Makro von: IngGi
Geschrieben am: 17.11.2009 22:27:27

Hallo Dani,

die Formel - und damit auch das Makro - ließe sich natürlich im konkreten Beispiel weitaus einfacher und eleganter gestalten. Statt auf alle Zahlen von 1 bis 7 zu prüfen, könnte man einfach auch auf <=7, >=1 und ganze Zahl prüfen. Aber ich denke mal, das ist nur ein etwas unglücklich gewähltes Testbeispiel und es geht dir generell um die Struktur des Makros.

Nachfolgendes Makro sieht nicht besonders professionell aus, da ich jede einzelne Zahl in einer _ eigenen If - Zeile prüfe. Man könnte auch alle Zahlen in einer If - Zeile prüfen und die Prüfungen dabei mit OR verknüpfen, also

If Range("A8") = 1 Or Range("A8") = 2 ... Then
Das wäre allerdings die langsamere Variante (was natürlich auch nur zum Tragen kommt, wenn die gesamte If - Struktur nicht nur einmal, sondern vielfach durchlaufen wird). Der Grund dafür ist der, das dann bei jedem Durchlauf der If - Struktur immer jeweils alle Bedingungen geprüft werden würden. Wenn man dagegen jede Prüfung in eine eigene If - Zeile steckt, dann werden die nachfolgenden Bedingungen erst gar nicht mehr geprüft, sobald eine Bedingung nicht erfüllt ist. Das Makro steigt dann immer sofort aus der gesamten If - Struktur aus.

Die Zelle X500 wäre im Beispiel die Zelle, in der deine Formel stehen würde:

Dim blnErfuellt As Boolean

If Range("A8") = 1 Then
  If Range("A8") = 2 Then
    If Range("A8") = 3 Then
      If Range("A8") = 4 Then
        If Range("A8") = 5 Then
          If Range("A8") = 6 Then
             If Range("A8") = 7 Then
              Range("X500") = Round((Range("K8") * Range("H8") / _
                Range("Q8")) / Range("Q8"), 0)
              blnErfuellt = True
             End If
          End If
        End If
      End If
    End If
  End If
End If

If Not blnErfuellt Then
  Range("X500") = 0
  blnErfuellt = False
End If
Code eingefügt mit VBA in HTML 2.0.0.3

Hallo Rene, falls du diesen Beitrag zufällig liest, danke für den Link zu diesem Syntaxhighlighter.

Gruß Ingolf


  

Betrifft: Korrektur von: IngGi
Geschrieben am: 17.11.2009 22:31:25

Hallo Dani,

sorry, der Code muss natürlich so heißen:

Dim blnErfuellt As Boolean

If Range("A8") = 1 Then
  If Range("A8") = 2 Then
    If Range("A8") = 3 Then
      If Range("A8") = 4 Then
        If Range("A8") = 5 Then
          If Range("A8") = 6 Then
             If Range("A8") = 7 Then
              Range("X500") = Round((Range("K8") * Range("H8") / _
                Range("Q8")) / Range("Q8"), 0)
              blnErfuellt = True
             End If
          End If
        End If
      End If
    End If
  End If
End If

If Not blnErfuellt Then
  Range("X500") = 0
Else
  blnErfuellt = False
End If
Code eingefügt mit VBA in HTML 2.0.0.3

Gruß Ingolf


  

Betrifft: das ist UND nicht ODER owT von: Uduuh
Geschrieben am: 17.11.2009 23:48:00




  

Betrifft: AW: Korrektur von: meixner
Geschrieben am: 18.11.2009 10:10:05

klappt! vielen Dank Ingolf.

Viele Grüße
Dani


Beiträge aus den Excel-Beispielen zum Thema "wenn - Formel als Makro"