Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA mehrere If abfragen

VBA mehrere If abfragen
19.11.2005 18:20:55
Rebecca
Hallo Forum,
Wie kann ich folgende Abfrage(n) im Makro verkürzen,
bzw. wie ist diese richtig zu schreiben, so geht es leider nicht
:END IF ohne IF Block.
e = Range("A1").Value
If e = Cells(94, 83).Value Then f = 1
End If
If e = Cells(94, 84).Value Then f = 2
End If
If e = Cells(94, 85).Value Then f = 3
End If
If e = Cells(94, 86).Value Then f = 4
End If
If e = Cells(94, 87).Value Then f = 5
End If
If e = Cells(94, 88).Value Then f = 6
End If
If e = Cells(94, 89).Value Then f = 7
End If
If e = Cells(94, 90).Value Then f = 8
End If
If e = Cells(94, 91).Value Then f = 9
End If
If e = Cells(94, 92).Value Then f = 10
End If
If e = Cells(94, 93).Value Then f = 11
End If
If e = Cells(94, 94).Value Then f = 12
End If
If e = Cells(94, 95).Value Then f = 13
End If
Herzlichen Dank für eure Antworten
Gruss Rebecca
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA mehrere If abfragen
19.11.2005 18:28:49
Hajo_Zi
Hallo Rebecca,
ich habe jetzt Deinen Code 1 zu 1 umgesetzt. Obwohl es wohl schneller geht mit Exit For

Sub test()
Dim F As Byte
Dim ByI As Byte
For ByI = 83 To 95
If Range("A1").Value = Cells(94, ByI).Value Then
F = ByI - 82
End If
Next ByI
End Sub



Anzeige
AW: VBA mehrere If abfragen
19.11.2005 22:15:17
berber
Hallo,
zum kürzen des Codes verwende den Code von Hajo.
Der Fehler in Deinem Code entsteht da Du
If e = Cells(94, 95).Value Then f = 13
in eine Zeile schreibst, das ist soweit o.k.
Du brauchst dann aber kein end if mehr.
lösche alle end if Befehle und der Fehler ist beseitigt.
das end if würdest Du nur benötigen wenn die Schreibweise wie unten ist
If e = Cells(94, 95).Value Then
f = 13
endif
Gruss
Berber
Anzeige
AW: VBA mehrere If abfragen
19.11.2005 18:31:56
US
Hallo,
zuerst mal ne kleine Frage?
Was meinst du mit " f=1 "?
Gib mal paar mehr Infos
Gruß Ulf
AW: VBA mehrere If abfragen
19.11.2005 18:44:16
Rebecca
Hallo und ersteinmal ein dankeschön euch beiden,
ich frage ab ob der Wert e, der in einer Zelle steht, identisch ist mit
einem anderen Wert, und weise je nach Ergebnis eine Zahl (f) zu.
Also ist f eine integere und e eine stringvariable.
Zumindest hab ich mir das mit meinem bisschen VBA so vorgestellt.
Gruss
Rebecca
Anzeige
Hallo Rebecca, was ist mit deiner Bestätigung...
20.11.2005 04:10:20
Luc:-?
...meiner Antwort auf deinen Thread vom 17.11.? Du brauchst nur nach Rebecca oder Luc: zu suchen, dann findest du ihn schon.
Luc :-|
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Mehrere If-Abfragen effizient gestalten


Schritt-für-Schritt-Anleitung

Um mehrere If-Abfragen in Excel VBA effizienter zu gestalten, kannst du die Verwendung einer Schleife in Betracht ziehen. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor in Excel (Alt + F11).

  2. Erstelle ein neues Modul (Rechtsklick auf "VBAProject", dann "Einfügen" > "Modul").

  3. Füge den folgenden Code ein:

    Sub test()
       Dim f As Byte
       Dim ByI As Byte
       For ByI = 83 To 95
           If Range("A1").Value = Cells(94, ByI).Value Then
               f = ByI - 82
           End If
       Next ByI
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus, um die Funktion zu testen.

Dieser Code verwendet eine Schleife, um mehrere If-Bedingungen nacheinander abzufragen, was die Lesbarkeit und Effizienz erhöht.


Häufige Fehler und Lösungen

  • Fehler: "End If ohne If Block"
    Dieser Fehler tritt auf, wenn du End If ohne ein entsprechendes If verwendest. Stelle sicher, dass du End If nur dann verwendest, wenn du die If-Abfrage in mehreren Zeilen schreibst. Bei einer Einzeiler-If-Abfrage ist dieses nicht nötig.

  • Lösung:
    Entferne alle End If-Befehle in deinem ursprünglichen Code, wenn du die Einzeiler-Form verwendest.


Alternative Methoden

Eine weitere Möglichkeit, mehrere If-Bedingungen in Excel VBA zu verarbeiten, ist die Verwendung von Select Case. Hier ein Beispiel:

Sub test()
    Dim f As Byte
    Dim e As String
    e = Range("A1").Value

    Select Case e
        Case Cells(94, 83).Value: f = 1
        Case Cells(94, 84).Value: f = 2
        Case Cells(94, 85).Value: f = 3
        Case Cells(94, 86).Value: f = 4
        Case Cells(94, 87).Value: f = 5
        Case Cells(94, 88).Value: f = 6
        Case Cells(94, 89).Value: f = 7
        Case Cells(94, 90).Value: f = 8
        Case Cells(94, 91).Value: f = 9
        Case Cells(94, 92).Value: f = 10
        Case Cells(94, 93).Value: f = 11
        Case Cells(94, 94).Value: f = 12
        Case Cells(94, 95).Value: f = 13
    End Select
End Sub

Diese Struktur ist besonders nützlich, wenn du viele Bedingungen hast und den Code übersichtlich halten möchtest.


Praktische Beispiele

Angenommen, du möchtest die Werte in A1 mit einer Liste in einer bestimmten Zeile vergleichen. Hier ist ein Beispiel, wie du das effektiv umsetzen kannst:

Sub Beispiel()
    Dim f As Byte
    Dim ByI As Byte
    Dim e As String
    e = Range("A1").Value

    For ByI = 83 To 95
        If e = Cells(94, ByI).Value Then
            f = ByI - 82
            Exit For ' Stoppt die Schleife, wenn ein Treffer gefunden wurde
        End If
    Next ByI
End Sub

Hier wird Exit For verwendet, um die Schleife sofort zu beenden, sobald eine Übereinstimmung gefunden wurde. Dies kann die Ausführungsgeschwindigkeit erhöhen.


Tipps für Profis

  • Verwende Exit For, um die Schleife zu beenden, wenn du das gewünschte Ergebnis gefunden hast.
  • Optimiere deinen Code durch die Verwendung von Arrays, wenn du mit großen Datenmengen arbeitest.
  • Nutze die Select Case-Struktur für mehr Klarheit bei vielen Bedingungen und um den Code lesbarer zu gestalten.

FAQ: Häufige Fragen

1. Frage
Wie kann ich mehrere If-Abfragen verkürzen?
Antwort: Du kannst eine Schleife oder die Select Case-Anweisung verwenden, um den Code kompakter und lesbarer zu gestalten.

2. Frage
Kann ich in VBA mehrere If-Bedingungen hintereinander verwenden?
Antwort: Ja, du kannst mehrere If-Bedingungen nacheinander verwenden, jedoch sollte dies mit Bedacht geschehen, um die Lesbarkeit und Effizienz deines Codes nicht zu beeinträchtigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige