Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
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

If-Else Fehler

If-Else Fehler
04.01.2023 14:08:23
Christoph
Hallo ich habe einen Fehler in verzweigten If-Else Anweisungen..
Wahrscheinlich eine kleinigkeit aber ich übersehe sie.

    If ZuAblaufHinzufügen.ComboBoxSchächte.Value  "" Then
If ZuAblaufHinzufügen.CheckBoxneuerZulauf.Value = True Or ZuAblaufHinzufügen.CheckBoxneuerAblauf.Value = True Then
Dim AnzahlZuläufe As Long
AnzahlZuläufe = CLng(ZuAblaufHinzufügen.TextBoxneuerZulauf.Value)
Dim AnzahlAbläufe As Long
AnzahlAbläufe = CLng(ZuAblaufHinzufügen.TextBoxneuerAblauf.Value)
Dim Anzahl As Long
Anzahl = AbzahlZuläufe + AnzahlAbläufe
If Anzahl > 0 Then
'Wenn alle Bedingungen erfüllt sind, landen wir hier und die eigentliche Operation wird ausgeführt.
Dim ComboBoxInhalt As String
ComboBoxInhalt = ZuAblaufHinzufügen.ComboBoxSchächte.Value
MsgBox "ComboBoxInhalt"
Dim ComboBoxAuswahl As Range
With Worksheets("Schächte").Select
Range("B1:B1000").Find(ComboBoxInhalt).Select
Else
MsgBox "Anzahl zusätzliche Zu/ Abläufe angeben"
End If
Else
MsgBox "Zu/ Ablauf anklicken"
End If
Else
MsgBox "Schacht Auswählen"
End If
Bei dem ersten Else kommt die Fehlermeldung Else ohne If
Danke schon mal

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: If-Else Fehler
04.01.2023 14:24:25
Beverly
Hi Christoph,
Excel ist nicht ganz korrekt, denn nicht das End If fehlt sondern deiner Zeile

With Worksheets("Schächte").Select
fehlt das End With
Bis später
Karin

AW: If-Else Fehler
04.01.2023 14:42:07
Christoph
Stimmt das war der Fehler, danke!
AW: If-Else Fehler
04.01.2023 14:26:51
onur
Besser so (Dims gehören in den Anfang der Sub)

    Dim AnzahlZuläufe As Long
Dim AnzahlAbläufe As Long
Dim Anzahl As Long
Dim ComboBoxInhalt As String
Dim ComboBoxAuswahl As Range
If ZuAblaufHinzufügen.ComboBoxSchächte.Value  "" Then
If ZuAblaufHinzufügen.CheckBoxneuerZulauf.Value = True Or ZuAblaufHinzufügen.CheckBoxneuerAblauf.Value = True Then
AnzahlZuläufe = CLng(ZuAblaufHinzufügen.TextBoxneuerZulauf.Value)
AnzahlAbläufe = CLng(ZuAblaufHinzufügen.TextBoxneuerAblauf.Value)
Anzahl = AbzahlZuläufe + AnzahlAbläufe
If Anzahl > 0 Then
'Wenn alle Bedingungen erfüllt sind, landen wir hier und die eigentliche Operation wird ausgeführt.
ComboBoxInhalt = ZuAblaufHinzufügen.ComboBoxSchächte.Value
MsgBox "ComboBoxInhalt"
With Worksheets("Schächte").Select
Range("B1:B1000").Find(ComboBoxInhalt).Select
Else
MsgBox "Anzahl zusätzliche Zu/ Abläufe angeben"
End If
Else
MsgBox "Zu/ Ablauf anklicken"
End If
Else
MsgBox "Schacht Auswählen"
End If
Aber was soll das hier denn darstellen?

With Worksheets("Schächte").Select

Anzeige
AW: If-Else Fehler
04.01.2023 14:45:35
Christoph
Hallo, danke für deine Antowrt!
Es ist ja nicht zwingend erforderlich, alle Dims an den Anfang zu machen. Ich habs mir angewöhnt das immer mittendrin zu machen. Was sind die Vorteile davon?
Zum zweiten Punkt: Damit möchte ich dem Programm sagen auf welchem Arbeitsblatt dann die Range gesucht wird usw.
Kann ich mir da das select sparen oder wie soll ich das sonst machen?
LG
AW: If-Else Fehler
04.01.2023 14:54:31
onur
With ohne End With ist schonmal Quatsch und führt zudem zu einer Fehlermeldung.
With nimmt man nur, um einen Ausdruck nicht mehrmals wiederholen zu müssen. z.B.

With Sheets("Blatt1")
.Range(.cells(1,1), .cells(1,5)).Copy
End With
statt

   Sheets("Blatt1").Range(Sheets("Blatt1").cells(1,1), Sheets("Blatt1").cells(1,5)).Copy
Aber in deinem Fallre reicht:

Worksheets("Schächte").Select
Range("B1:B1000").Find(ComboBoxInhalt).Select

Anzeige
AW: If-Else Fehler
04.01.2023 18:35:34
Yal
Moin,
wenn wir schon dabei sind, gute Rat zu geben:
_ Dims werden alle am Anfang aufgelistet, es kommt von andere, altere Programmiersprachen wie C. VBA ist da toleranter, aber so ist die Best Practice.
_ so viele Variable wie nötig, so wenig wie möglich. Ausser man ist im Debug-Modus: da geht man in Schritt-Lauf beim offenen Lokalfenster und es ist gut viele Variablen für eine bessere übersicht.
_ Variablenamen sollten so kurz wie möglich sein und leicht von einander zu trennen: "AnzahlZuläufe" und "AnzahlAbläufe" sind in dem Fall unglücklich gewält.
_ with wird nur benutzt, um Wiederholung zu vermeiden. In dem Fall würde ich "ZuAblaufHinzufügen" in einem With packen.
So würde das gesamt aussehen:
(Möchtest Du den Text "cmbInhalt" anzeigen oder der Inhalt der Variable cmbInhalt? ich habe letzteres umgesetzt)

Dim Anz_Zul As Long
Dim Anz_Abl As Long
Dim cmbInhalt As String
With ZuAblaufHinzufügen
If .ComboBoxSchächte.Value  "" Then
If .CheckBoxneuerZulauf.Value = True Or .CheckBoxneuerAblauf.Value = True Then
Anz_Zul = CLng(.TextBoxneuerZulauf.Value)
Anz_Abl = CLng(.TextBoxneuerAblauf.Value)
If (AbzahlZuläufe + Anz_Abl) > 0 Then
'Wenn alle Bedingungen erfüllt sind, landen wir hier und die eigentliche Operation wird ausgeführt.
cmbInhalt = .ComboBoxSchächte.Value
MsgBox cmbInhalt
Worksheets("Schächte").Range("B1:B1000").Find(cmbInhalt).Select
Else
MsgBox "Anzahl zusätzliche Zu/ Abläufe angeben"
End If
Else
MsgBox "Zu/ Ablauf anklicken"
End If
Else
MsgBox "Schacht Auswählen"
End If
End With
Man könnte aber auch Anz_Zul und Anz_Abl einsparen (falls nirgendwo anders verwendet, es ist ja nur ein Bruchteil des Codes):

Dim cmbInhalt As String
With ZuAblaufHinzufügen
If .ComboBoxSchächte.Value  "" Then
If .CheckBoxneuerZulauf.Value = True Or .CheckBoxneuerAblauf.Value = True Then
If (CLng(.TextBoxneuerZulauf.Value) + CLng(.TextBoxneuerAblauf.Value)) > 0 Then
'Wenn alle Bedingungen erfüllt sind, landen wir hier und die eigentliche Operation wird ausgeführt.
cmbInhalt = .ComboBoxSchächte.Value
MsgBox cmbInhalt
Worksheets("Schächte").Range("B1:B1000").Find(cmbInhalt).Select
Else
MsgBox "Anzahl zusätzliche Zu/ Abläufe angeben"
End If
Else
MsgBox "Zu/ Ablauf anklicken"
End If
Else
MsgBox "Schacht Auswählen"
End If
End With
VG
Yal
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige