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

Forumthread: 2 Abfragen mit VBA and und or Operator klappt nich

2 Abfragen mit VBA and und or Operator klappt nich
chris

Hallo VBA Experten,
könnt ihr mir bei einer Abfrage in VBA helfen ? Würde mir sehr helfen.
Es geht um die unten stehende Zeile.
Dise soll prüfen ob Monat und Datum einer zelle zutreffen.
Das ergebniss soll nur true sein wenn der and operator true ist also Monat UND Jahr gleich sind. _
Deshalb habe ich auch and genommen.
dann soll noch eine weiter zelle geprüft werden.Und zwar soll das ganze makro dann nur true  _
sein wenn in der zelle entweder A oder B steht.
Leider klappt die Abfrage so nicht ?
Was ist Falsch ?
Aktuell steht in den beiden Zellen als Datum steht:08.06.2010 und in der anderen zelle steht B
Somit müsste das ergebniss falsch sein weil ja der Monat nicht ok ist.
Monat ist ist 06(Juni) Monat soll also in month_a = 9
Bitte um Hilfe.
ich glaube es hat etwas mit den and und or abfragen zu tun.
VieleN dank im voraus.
Gruß Chris

If Month(Worksheets(tepr).Cells(data_row, col_datum_beauftragter)) = month_a And Year(Worksheets(tepr).Cells(data_row, col_datum_beauftragter)) = akt_jahr And InStr(Worksheets(tepr).Cells(data_row, col_phase), "B") > 0 Or InStr(Worksheets(tepr).Cells(data_row, col_phase), "A") Then

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: 2 Abfragen mit VBA and und or Operator klappt nich
23.08.2010 08:30:27
fcs
Hallo Chris.
es fehlen Klammern, die die beiden per OR zu prüfenden Ausdrucke einschliessen
If Month(Worksheets(tepr).Cells(data_row, col_datum_beauftragter)) = month_a _
And Year(Worksheets(tepr).Cells(data_row, col_datum_beauftragter)) = akt_jahr _
And (InStr(Worksheets(tepr).Cells(data_row, col_phase), "B") > 0 _
Or InStr(Worksheets(tepr).Cells(data_row, col_phase), "A")) Then

Gruß
Franz
Anzeige
AW: 2 Abfragen mit VBA and und or Operator klappt nich
23.08.2010 09:38:59
chris
Danke das Hilft weiter !
Danke auch Gerd für Deine Antwort !
Schönen Tag noch.
AW: 2 Abfragen mit VBA and und or Operator klappt nich
23.08.2010 09:20:08
Gerd
Hallo Chris
...... und schon aus Gründen der Symmetrie würde ich auch bei der letzten Bedingung "größer 0" dazuschreiben.
Das könnte man von der korrekten Syntax abgesehen etwas kürzer gestalten.
Sub montag()
Dim dteDatum As Date, strText As String
Const akt_jahr As Integer = 2010
Const montha As Integer = 6
'dtedatum = Worksheets(tepr).Cells(data_row, col_datum_beauftragter)
dteDatum = "08.06.2010"
'strText = Worksheets(tepr).Cells(data_row, col_phase)
strText = "asdfBasdf"
If DateSerial(akt_jahr, montha, 1) = DateSerial(Year(dteDatum), Month(dteDatum), 1) Then
Stop
If strText Like "*" & "[A-B]" & "*" Then
Stop
End If
End If
End Sub
Gruß Gerd
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Abfragen mit VBA: And und Or Operator richtig nutzen


Schritt-für-Schritt-Anleitung

  1. Klausel erstellen: Beginne mit der Erstellung deiner If-Anweisung in VBA. Nutze die Month und Year Funktionen, um den Monat und das Jahr aus einer Datum-Zelle zu extrahieren.

    If Month(Worksheets(tepr).Cells(data_row, col_datum_beauftragter)) = month_a And _
      Year(Worksheets(tepr).Cells(data_row, col_datum_beauftragter)) = akt_jahr Then
  2. Bedingung mit OR verbinden: Um eine zweite Bedingung hinzuzufügen, die prüft, ob in einer anderen Zelle "A" oder "B" steht, musst du die InStr Funktion verwenden. Achte darauf, die Bedingungen mit Klammern korrekt zu gruppieren.

    If (InStr(Worksheets(tepr).Cells(data_row, col_phase), "B") > 0 Or _
       InStr(Worksheets(tepr).Cells(data_row, col_phase), "A")) Then
  3. Kombinierte Bedingung: Kombiniere beide Bedingungen in einer If-Anweisung. Vergiss nicht, die Klammern richtig zu setzen, um die Logik zu klären.

    If Month(Worksheets(tepr).Cells(data_row, col_datum_beauftragter)) = month_a And _
      Year(Worksheets(tepr).Cells(data_row, col_datum_beauftragter)) = akt_jahr And _
      (InStr(Worksheets(tepr).Cells(data_row, col_phase), "B") > 0 Or _
       InStr(Worksheets(tepr).Cells(data_row, col_phase), "A")) Then

Häufige Fehler und Lösungen

  • Fehlende Klammern: Ein häufiger Fehler ist das Vergessen von Klammern um die OR-Bedingungen. Achte darauf, dass alle OR-Bedingungen in Klammern gesetzt werden, um die Logik klarzustellen.

  • Falsche Operatoren: Stelle sicher, dass du die richtigen Operatoren verwendest. In VBA wird And für logische UND-Bedingungen und Or für logische ODER-Bedingungen verwendet.

  • Syntaxfehler: Achte auf das richtige Format und die korrekten Variablenbezeichnungen. Ein einfacher Tippfehler kann dazu führen, dass dein VBA-Code nicht funktioniert.


Alternative Methoden

  • Verwendung von Select Case: Anstelle von If-Anweisungen kann auch die Select Case Struktur verwendet werden, um mehrere Bedingungen zu prüfen. Dies kann den Code lesbarer machen.

  • VBA-Funktionen nutzen: Du kannst auch benutzerdefinierte Funktionen schreiben, die die Logik kapseln und dadurch deinen Code modularer und wartbarer gestalten.


Praktische Beispiele

Hier ist ein einfaches Beispiel für die Verwendung von And und Or in VBA:

Sub Beispiel()
    Dim dteDatum As Date
    Dim strText As String
    dteDatum = "08.06.2010"
    strText = "B"

    If Month(dteDatum) = 6 And Year(dteDatum) = 2010 And _
       (InStr(strText, "B") > 0 Or InStr(strText, "A") > 0) Then
        MsgBox "Bedingungen erfüllt."
    Else
        MsgBox "Bedingungen nicht erfüllt."
    End If
End Sub

In diesem Beispiel wird geprüft, ob das Datum dem 6. Monat des Jahres 2010 entspricht und ob der Text "A" oder "B" enthält.


Tipps für Profis

  • Verwende Option Explicit: Dies zwingt dich dazu, alle Variablen zu deklarieren, was die Fehlersuche erleichtert.

  • Debugging nutzen: Setze Haltepunkte in deinem Code, um den Fluss zu überprüfen und sicherzustellen, dass alle Bedingungen wie erwartet arbeiten.

  • Lesbarkeit erhöhen: Verwende Kommentare und klare Variablennamen, um die Lesbarkeit deines Codes zu erhöhen.


FAQ: Häufige Fragen

1. Was mache ich, wenn meine Bedingungen nicht erfüllt werden?
Überprüfe die Logik deiner Bedingungen und stelle sicher, dass du die richtigen Operatoren verwendest. Füge Debugging-Haltepunkte hinzu, um den Wert der Variablen zu überprüfen.

2. Kann ich mehrere Bedingungen in einer If-Anweisung kombinieren?
Ja, du kannst mehrere Bedingungen mit And und Or kombinieren, achte jedoch darauf, die Klammern korrekt zu setzen, um die Logik klarzustellen.

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