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

Forumthread: Mehrere Bedingungen abfragen

Mehrere Bedingungen abfragen
25.03.2016 20:10:27
Jens
Hallo zusammen,
Ich weiss leider nicht, wie ich eine Schleife korrekt formuliere, wenn bestimmte Bedingungen zutreffen.
Es sollte beim Clicken des Buttons Monat abschliessen eine Fehlermeldung auftauchen, sobald jemand in meiner Tabelle in Spalte F den Text "Urlaub" einträgt und gleichzeitig Arbeitszeiten oder Pausenzeiten in den Spalten B, C oder D eingetragen hat.
Ich bekomme die Fehlermeldung "Laufzeitfehler 13. Typen unverträglich."
Kann mir hier jemand weiterhelfen, wie ich diese Schleife richtig formuliere ?
Und wie kann ich mir bei dem Text die Zeilennummer anzeigen lassen ?
Vielen Dank für Eure Hilfe !
Das ist der Code:
Private Sub CommandButton1_Click()
If Range("J5") = "" Then
If Range("F14:F44").Value = "Urlaub" And Range("B14:B55").Value  "" And Range("C14:  _
_
C55").Value  "" And Range("D14:D55").Value  "" Then
Dim strText As String
strText = "Fehler in Zeile x. Bei einem Urlaubstag sind können keine Urlaubs- oder   _
_
Pausenzeiten abgerechnet werden."
MsgBox strText
Else
Range("j5").Value = 1#
CommandButton1.BackColor = RGB(255, 0, 0)
ActiveSheet.CommandButton1.Caption = "Monat abgeschlossen"
End If
Else
Range("j5").Value = ""
CommandButton1.BackColor = RGB(51, 255, 0)
ActiveSheet.CommandButton1.Caption = "Monat abschliessen"
End If
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Bedingungen abfragen
25.03.2016 20:47:36
Peter
Hallo Jens,
versuche es einmal so:
Option Explicit
Private Sub CommandButton1_Click()
Dim lZeile  As Long
If Range("J5") = "" Then
For lZeile = 14 To 44
If Range("F" & lZeile).Value = "Urlaub" Then
If Range("B" & lZeile).Value  "" Or _
Range("C" & lZeile).Value  "" Or _
Range("D" & lZeile).Value  "" Then
MsgBox "Fehler in Zeile  """ & lZeile & """  Bei einem Urlaubstag sind können  _
keine Urlaubs- oder" & _
" Pausenzeiten abgerechnet werden.", _
48, "   Hinweis für " & Application.UserName
Else
Range("j5").Value = 1#
CommandButton1.BackColor = RGB(255, 0, 0)
ActiveSheet.CommandButton1.Caption = "Monat abgeschlossen"
End If
Else
Range("j5").Value = ""
CommandButton1.BackColor = RGB(51, 255, 0)
ActiveSheet.CommandButton1.Caption = "Monat abschliessen"
End If
Next lZeile
End If
End Sub

Gruß Peter

Anzeige
AW: Mehrere Bedingungen abfragen
26.03.2016 08:59:25
Jens
Hallo Peter,
Vielen Dank für die Hilfe. Funktioniert prima ! Ich habe den Code noch etwas umgestellt und eine Fehlervariable eingebaut.
Viele Grüße,
Jens

AW: Mehrere Bedingungen abfragen
26.03.2016 11:48:17
Jens
Ich habe jetzt die Fehler-Variable eingebaut. Die ersten beiden Abfragen (Arbeitszeit über zehn Stunden, Arbeitszeit nicht negativ) funktionieren einwandfrei. Nur die dritte Abfrage funktioniert nicht bzw. gibt die Fehlermeldung bei den falschen Zellen aus.
Das hat bestimmt etwas mit der Formatierung der Zellen zu tun. Die Zellen der Spalte B,C und D sind in hh:mm formatiert. Die Zellen der Spalte E benutzerdefiniert im Format 0,00;-0;;@.
Was mache ich falsch beim Auslesen der Werte ?
Private Sub CommandButton1_Click()
Dim lZeile  As Long
Dim Fehler As Long
Fehler = False
For lZeile = 14 To 44
If Range("F" & lZeile).Value = "URLAUB" Then
If Range("B" & lZeile).Value = "" Or _
Range("C" & lZeile).Value = "" Then
MsgBox "Fehler in Zeile  """ & lZeile & """  Bei geringfügig Beschäftigten mü _
ssen die geplanten Arbeitszeiten für einen Urlaubstag angegeben werden."
Fehler = True
End If
End If
If Range("E" & lZeile).Value > 10 Then
MsgBox "Fehler in Zeile  """ & lZeile & """  Die tägliche Arbeitszeit darf zehn  _
Stunden nicht überschreiten."
Fehler = True
End If
If Range("E" & lZeile).Value  0 And (Range("D" &  _
lZeile).Value * 1440) 

For lZeile = 14 To 44
If Range("F" & lZeile).Value = "URLAUB" Then
If Range("B" & lZeile).Value = "" Or _
Range("C" & lZeile).Value = "" Then
MsgBox "Fehler in Zeile """ & lZeile & """ Bei geringfügig Beschäftigten müssen die geplanten Arbeitszeiten für einen Urlaubstag angegeben werden."
Fehler = True
End If
End If
If Range("E" & lZeile).Value > 10 Then
MsgBox "Fehler in Zeile """ & lZeile & """ Die tägliche Arbeitszeit darf zehn Stunden nicht überschreiten."
Fehler = True
End If
If Range("E" & lZeile).Value MsgBox "Fehler in Zeile """ & lZeile & """ Die tägliche Arbeitszeit darf nicht negativ sein."
Fehler = True
End If
Next lZeile
If Range("J5") = "" And Fehler = True Then
Range("j5").Value = ""
CommandButton1.BackColor = RGB(51, 255, 0)
ActiveSheet.CommandButton1.Caption = "Monat abschliessen"
Else
Range("j5").Value = 1#
CommandButton1.BackColor = RGB(255, 0, 0)
ActiveSheet.CommandButton1.Caption = "Monat abgeschlossen"
End If
End Sub
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

Mehrere Bedingungen abfragen in Excel VBA


Schritt-für-Schritt-Anleitung

Um mehrere Bedingungen in Excel VBA abzufragen, kannst Du die If-Anweisung verwenden. Hier ist ein einfaches Beispiel, das zeigt, wie Du mehrere Bedingungen in einer Schleife prüfen kannst:

Private Sub CommandButton1_Click()
    Dim lZeile As Long

    If Range("J5") = "" Then
        For lZeile = 14 To 44
            If Range("F" & lZeile).Value = "Urlaub" Then
                If Range("B" & lZeile).Value <> "" Or _
                   Range("C" & lZeile).Value <> "" Or _
                   Range("D" & lZeile).Value <> "" Then
                    MsgBox "Fehler in Zeile """ & lZeile & """. Bei einem Urlaubstag können keine Arbeitszeiten abgerechnet werden."
                End If
            End If
        Next lZeile
    End If
End Sub

In diesem Code wird überprüft, ob in der Spalte F der Text "Urlaub" steht und ob in den Spalten B, C oder D Werte eingetragen sind. Bei einer Übereinstimmung wird eine Fehlermeldung ausgegeben.


Häufige Fehler und Lösungen

  1. Laufzeitfehler 13: Typen unverträglich

    • Dieser Fehler tritt häufig auf, wenn Du versuchst, verschiedene Datentypen zu vergleichen. Stelle sicher, dass die Werte, die Du vergleichst, vom gleichen Datentyp sind.
  2. Falsche Zellreferenzen

    • Überprüfe, ob die Zellreferenzen korrekt sind. Beispielsweise kann ein falscher Bereich in der Schleife dazu führen, dass unerwartete Zellen geprüft werden.
  3. Formatierungsprobleme

    • Wenn Zellen in verschiedenen Formaten vorliegen (z.B. hh:mm), kann dies zu Problemen beim Auslesen der Werte führen. Stelle sicher, dass Du die richtigen Formatierungen verwendest.

Alternative Methoden

Du kannst auch die Select Case-Anweisung verwenden, um mehrere Bedingungen abzufragen. Dies kann den Code klarer und übersichtlicher machen:

Select Case Range("F" & lZeile).Value
    Case "Urlaub"
        If Range("B" & lZeile).Value <> "" Or _
           Range("C" & lZeile).Value <> "" Or _
           Range("D" & lZeile).Value <> "" Then
            MsgBox "Fehler in Zeile """ & lZeile & """."
        End If
    Case Else
        ' Weitere Bedingungen
End Select

Praktische Beispiele

Hier sind weitere Beispiele, wie Du mehrere Bedingungen in Excel VBA abfragen kannst:

  1. Überprüfung von Arbeitsstunden

    If Range("E" & lZeile).Value > 10 Then
       MsgBox "Die tägliche Arbeitszeit darf zehn Stunden nicht überschreiten."
    End If
  2. Überprüfung auf negative Werte

    If Range("E" & lZeile).Value < 0 Then
       MsgBox "Die tägliche Arbeitszeit darf nicht negativ sein."
    End If

Diese Beispiele zeigen, wie Du mehrere Bedingungen in einer Abfrage kombinieren kannst, um sicherzustellen, dass die Eingaben in Deinem Excel-Dokument korrekt sind.


Tipps für Profis

  • Nutze Variablen für die Zellreferenzen: Das macht den Code lesbarer.
  • Verwende Option Explicit: Damit zwingst Du Dich, alle Variablen zu deklarieren, was Fehler reduziert.
  • Nutze Debugging-Tools: Mit Debug.Print kannst Du Werte während der Ausführung des Codes ausgeben, um Fehler leichter zu finden.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Bedingungen in einer Zeile überprüfen? Du kannst And und Or verwenden, um Bedingungen zu kombinieren. Beispiel: If Range("A1").Value > 10 And Range("B1").Value < 20 Then.

2. Was ist der Unterschied zwischen If und Select Case? If ist ideal für einfache Bedingungen, während Select Case bei mehreren Bedingungen klarer strukturiert ist.

3. Wie kann ich die Zeilennummer in der Fehlermeldung anzeigen? Du kannst die Variable für die Zeilennummer, wie lZeile, in die MsgBox integrieren, um die entsprechende Zeile anzuzeigen.

4. Was mache ich, wenn der Code nicht funktioniert? Überprüfe die Zellreferenzen und Datentypen. Verwende Debug.Print, um den Status Deiner Variablen während der Ausführung zu überwachen.

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