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

"Fehler beim Compilieren: Else ohne if"

Forumthread: "Fehler beim Compilieren: Else ohne if"

"Fehler beim Compilieren: Else ohne if"
08.12.2006 16:02:47
Peter
Hallo Forum
Irgendwie habe ich die If / Else / End if
Kontrollstruktur noch nicht begriffen, sonst müsste meiner Meinung nach nachfolgender Code problemlos ablaufen.
Kann mir jemand sagen, wo das Problem liegt?
Fehlermeldung: "Fehler beim Compilieren: Else ohne if"
Ich formatiere die Spalten 4,5,11, wobei das Problem bei Spalte 5 (E) liegt
Spalte E muss letzlich ein Textformat haben und hat in der Regel 9 insgesamt 9 Stellen (inkl. vorangestellte Nullen) ausser die eingetragene Zahl habe 10 oder mehr Stellen, dass beträgt die Länge maximal 13 Stellen, wobei 9 Stellen immer angezeigt werden.
Vielen Dank
Peter
zNr = 2
Do While zNr .Cells(zNr, 4).NumberFormat = "0"
.Cells(zNr, 5).NumberFormat = "@"
If .Len(.Cells(zNr, 5)) >= 10 Then .Cells(zNr, 5) = Right("####000000000" & .Cells(zNr, 5), 13)
Else
.Cells(zNr, 5) = Right("000000000" & Cells(zNr, 5), 9)
End If
.Cells(zNr, 11).NumberFormat = "#,##0.00; -#,##0.00; "
zNr = zNr + 1
Loop
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "Fehler beim Compilieren: Else ohne if"
08.12.2006 16:30:05
Matthias
Hallo Peter,
nach Then muss eine neue Zeile beginnen:
If ... Then
Else
End If
oder aber so:
If ... Then ... Else 'dann ohne End If
Gruß Matthias
AW: "Fehler beim Compilieren: Else ohne if"
08.12.2006 16:32:03
Andi
Hi,
das was im 'Then-Zweig' der If-Abfrage passieren soll, darfst Du nur dann in die gleiche Zeile schreiben, wenn die gesamte If-Abrage nur aus einer Zeile besteht, also nur eine Anweisung im 'Then-Zweig' und keine Else- oder ElseIf-Zweige.
Bei Dir muss das so aussehen:
[...]
If .Len(.Cells(zNr, 5)) &gt= 10 Then
.Cells(zNr, 5) = Right("####000000000" & .Cells(zNr, 5), 13)
Else
.Cells(zNr, 5) = Right("000000000" & Cells(zNr, 5), 9)
End If
[...]
Schönen Gruß,
Andi
Anzeige
AW: "Fehler beim Compilieren: Else ohne if"
08.12.2006 16:32:14
Kurt
zNr = 2
Do While zNr .Cells(zNr, 4).NumberFormat = "0"
.Cells(zNr, 5).NumberFormat = "@"
If .Len(.Cells(zNr, 5)) >= 10 Then
.Cells(zNr, 5) = Right("####000000000" & .Cells(zNr, 5), 13)
Else
.Cells(zNr, 5) = Right("000000000" & Cells(zNr, 5), 9)
End If
.Cells(zNr, 11).NumberFormat = "#,##0.00; -#,##0.00; "
zNr = zNr + 1
Loop
mfg Kurt
Anzeige
AW: "Fehler beim Compilieren: Else ohne if"
08.12.2006 16:37:37
IngGi
Hallo Peter,
es gibt zwei grundlegende Formen von If-Strukturen.
If "Bedingung=Wahr" Then "tue etwas"
Wenn es hinter dem "Then" in der selben Zeile weitergeht, benötigt die If-Anweisung kein "End If", es darf noch nicht einmal verwendet werden und auch "ElseIf" bzw. "Else" sind nicht möglich.
If "Bedingung=Wahr" Then
"tue etwas"
ElseIf "andere Bedingung=Wahr" Then
"tue etwas anderes"
Else
"tue etwas völlig anderes"
End If
Geht es nach dem "Then" dagegen erst auf der nächsten Zeile weiter, benötigt die If-Anweisung zwingend ein "End If" und auch "ElseIf" bzw. "Else" für weitere Bedingungen bzw. Restfälle sind dann möglich.
Gruß Ingolf
Anzeige
AW: "Fehler beim Compilieren: Else ohne if"
08.12.2006 16:41:40
Peter
Hallo
Herzlichen Dank für die zahlreichen Rückmeldungen. Echt spitze. Werde mir alles zu Gemüte führen.
Freundlicher Gruss
Peter
AW: "Fehler beim Compilieren: Else ohne if"
08.12.2006 16:48:03
Matthias
Hallo Ingolf,
...benötigt die If-Anweisung kein "End If", es darf noch nicht einmal verwendet werden und auch "ElseIf" bzw. "Else" sind nicht möglich.
Also "Else" geht schon:

If a=1 Then b=1 Else c=1

Gruß Matthias
Anzeige
AW: "Fehler beim Compilieren: Else ohne if"
08.12.2006 17:15:39
IngGi
Hallo Matthias,
da hast du natürlich vollkommen recht. Diese Möglichkeit hatte sich in meinem Hirn gerade gut versteckt.
Gruß Ingolf
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Fehler beim Compilieren: Else ohne if in VBA


Schritt-für-Schritt-Anleitung

Um den Fehler "Else ohne if" in VBA zu beheben, folge diesen Schritten:

  1. Überprüfe die Struktur Deiner If-Anweisung. Achte darauf, dass jede If-Anweisung korrekt mit End If abgeschlossen wird, wenn Du mehrere Zeilen in Deinem Then-Zweig hast.

  2. Nutze die richtige Syntax. Eine If-Abfrage sollte so aussehen:

    If Bedingung Then
       ' Code für den Fall der Bedingung ist wahr
    Else
       ' Code für den Fall der Bedingung ist falsch
    End If
  3. Vermeide es, mehrere Anweisungen in einer Zeile zu schreiben, wenn Du Else oder ElseIf verwendest. Schreibe sie stattdessen in separaten Zeilen.

  4. Teste Deine Anweisung. Führe den Code nach jeder Änderung aus, um sicherzustellen, dass der Fehler nicht erneut auftritt.


Häufige Fehler und Lösungen

  1. Fehler: "Else ohne if"

    • Lösung: Überprüfe, ob jede Else-Anweisung zu einer If-Anweisung gehört. Stelle sicher, dass die Syntax korrekt ist.
  2. Fehler: vba end if ohne if block

    • Lösung: Diese Fehlermeldung tritt auf, wenn End If ohne das vorherige If verwendet wird. Entferne das überflüssige End If.
  3. Fehler: ElseIf wird nicht erkannt

    • Lösung: Vergewissere Dich, dass Du die richtige Struktur verwendest:
      If Bedingung1 Then
      ' tue etwas
      ElseIf Bedingung2 Then
      ' tue etwas anderes
      Else
      ' tue etwas ganz anderes
      End If

Alternative Methoden

Wenn Du mit If-Anweisungen Schwierigkeiten hast, kannst Du auch die Select Case-Anweisung verwenden, die in vielen Fällen übersichtlicher ist. Hier ein Beispiel:

Select Case Bedingung
    Case 1
        ' tue etwas
    Case 2
        ' tue etwas anderes
    Case Else
        ' tue etwas völlig anderes
End Select

Diese Methode hilft, mehrere Bedingungen zu prüfen, ohne die Fehleranfälligkeit von If-Anweisungen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie man If, Else und End If korrekt verwendet:

Sub Beispiel()
    Dim zNr As Integer
    zNr = 2
    Do While zNr < 10
        If Len(Cells(zNr, 5)) >= 10 Then
            Cells(zNr, 5) = Right("####000000000" & Cells(zNr, 5), 13)
        Else
            Cells(zNr, 5) = Right("000000000" & Cells(zNr, 5), 9)
        End If
        zNr = zNr + 1
    Loop
End Sub

In diesem Beispiel wird die Länge der Zelle in Spalte 5 geprüft und je nach Länge eine unterschiedliche Formatierung angewendet.


Tipps für Profis

  • Verwende Kommentare: Kommentiere Deinen Code, um die Logik hinter komplexen If-Anweisungen zu erklären.
  • Schreibe klare Bedingungen: Halte die Bedingungen einfach und verständlich, um die Lesbarkeit zu erhöhen.
  • Nutze Debugging-Tools: Verwende die Debugging-Funktionen in VBA, um Fehler schnell zu identifizieren und zu beheben.
  • Teste regelmäßig: Führe Deinen Code nach jeder Änderung aus, um sicherzustellen, dass keine neuen Fehler eingeführt werden.

FAQ: Häufige Fragen

1. Was bedeutet "Else ohne if"? Diese Fehlermeldung tritt auf, wenn eine Else-Anweisung ohne zugehörige If-Anweisung verwendet wird.

2. Wie kann ich mehrere Bedingungen in einer If-Anweisung prüfen? Du kannst ElseIf verwenden, um mehrere Bedingungen zu prüfen:

If Bedingung1 Then
    ' tue etwas
ElseIf Bedingung2 Then
    ' tue etwas anderes
Else
    ' tue etwas ganz anderes
End If

3. Was ist der Unterschied zwischen If und ElseIf in VBA? If prüft die erste Bedingung, während ElseIf eine zusätzliche Bedingung prüft, wenn die vorherige Bedingung falsch ist.

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