Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1116to1120
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

wenn - Formel als Makro

wenn - Formel als Makro
meixner
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;))

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
siehe Select Case Anweisung owT
17.11.2009 22:18:39
Rudi
AW: wenn - Formel als Makro
17.11.2009 22:27:27
IngGi
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 =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.3size>
Gruß Ingolf
Anzeige
Korrektur
17.11.2009 22:31:25
IngGi
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.3size>
Gruß Ingolf
Anzeige
das ist UND nicht ODER owT
17.11.2009 23:48:00
Uduuh
AW: Korrektur
18.11.2009 10:10:05
meixner
klappt! vielen Dank Ingolf.
Viele Grüße
Dani

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige