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

IIf - Anweisung mit Sprungmarke

Forumthread: IIf - Anweisung mit Sprungmarke

IIf - Anweisung mit Sprungmarke
Mathias
Ich möchte eine IIf - Abfrage verwenden und darin eine Sprungmarke einfügen. Leider hab ich keine Ahnung, weshalb meine Variante nicht funzt. Könnt ihr mir helfen? Hier mein Versuch:
 IIf IsNumeric(TextBox1.Value), Goto Start,  GoTo Beenden

Anzeige

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

Betreff
Benutzer
Anzeige
AW: IIf - Anweisung mit Sprungmarke
10.12.2009 21:52:56
Hajo_Zi
Hallo Matthias,
mit Sprungmarken wird eigentlich nicht meher gearbeitet.
Ich würde vermuten bei Dir fehlt ein KLammerpaar ()

erl.
10.12.2009 22:17:43
Mathias
Ich glaub, ich hab es:
http://www.vbarchiv.net/commands/IIF.php
Es gehen nur Strings, mit denen man arbeiten kann!!!
Anzeige
Du verwendest IIf falsch (anstatt If)...
10.12.2009 22:33:57
NoNet
Hallo Mathias,
IIf (...) ist doch eine Funktion, die einen WERT zurückgibt (ähnlich der WENN()-Tabellenblattfunktion !) und keine Funktion zum Überprüfen und daraus resultierendem "Springen" im Code.
Dazu benötigst Du einfach nur eine IF-Anweisung :
Private Sub CommandButton1_Click()
If IsNumeric(TextBox1.Value) Then GoTo Teil1 Else: GoTo Teil2
Teil1:
MsgBox "Teil 1"
GoTo Ende
Teil2:
MsgBox "Teil 2"
Ende:
End Sub
Davon abgesehen ist "GOTO" wirklich ein Sprachelement, das man nicht (mehr) verwenden sollte !
Gruß, NoNet
Anzeige
...zumindest nicht bei so etwas wie...
11.12.2009 02:34:31
Luc:-?
...deinem Bsp, NoNet... ;-)
Es gibt aber schon noch Fälle, wo der GoTo- bzw GoSub-Einsatz sinnvoll sein kann — besonders in Kombination mit On. Für dein Bsp wäre das so...
On 1 + IsNumeric(TextBox1.Value) GoTo Teil2
Wenn numerisch, ergibt sich 0 &rarr es wird mit dem nächsten Befehl, also der Teil1-MsgBox, fortgesetzt.
Fazit: Eine Sprungmarke und etliche Zeichen eingespart, 1 VglOperation durch einfache Addition ersetzt (bleibt nur noch die VglFkt)!
Gruß Luc :-?
Anzeige
Ich habe Mathias' Beispiel 1:1 umgesetzt
11.12.2009 03:02:19
NoNet
Hey Luc,
ich habe Mathias' Versuch lediglich 1:1 in eine funktionierende Variante umgeformt. Auf diese "GoTo"-Variante bezog sich mein "Kommentar".
Dass "GoTo" in anderen Fällen ("On Error" etc.) sinnvoll sein kann, würde ich nicht dementieren...
Gruß, NoNet
;
Anzeige

Infobox / Tutorial

IIf - Anweisung und Sprungmarken in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor in Excel, indem Du ALT + F11 drückst.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeinWorkbookName)" > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Private Sub CommandButton1_Click()
       If IsNumeric(TextBox1.Value) Then GoTo Teil1 Else GoTo Teil2
    Teil1:
       MsgBox "Teil 1"
       GoTo Ende
    Teil2:
       MsgBox "Teil 2"
    Ende:
    End Sub
  4. Teste den Code, indem Du auf den Button klickst und verschiedene Werte in TextBox1 eingibst.


Häufige Fehler und Lösungen

  • Fehler 1: "TypMismatch" bei der Überprüfung von TextBox1.Value.

    • Lösung: Stelle sicher, dass der Inhalt der TextBox tatsächlich numerisch ist.
  • Fehler 2: GoTo-Anweisung funktioniert nicht.

    • Lösung: Vergewissere Dich, dass die Sprungmarken (z.B. Teil1, Teil2) korrekt definiert sind.
  • Fehler 3: Fehlende Klammern bei der IIf-Anweisung.

    • Lösung: Verwende die korrekte Syntax, z.B. IIf(IsNumeric(TextBox1.Value), "Wert1", "Wert2").

Alternative Methoden

Statt GoTo kannst Du auch Select Case verwenden, um die Lesbarkeit des Codes zu verbessern. Hier ein Beispiel:

Private Sub CommandButton1_Click()
    Select Case IsNumeric(TextBox1.Value)
        Case True
            MsgBox "Teil 1"
        Case False
            MsgBox "Teil 2"
    End Select
End Sub

Diese Methode ist klarer und vermeidet die Verwendung von Sprungmarken, die als unübersichtlich gelten.


Praktische Beispiele

Beispiel 1: Einfache IIf-Implementierung

Dim result As String
result = IIf(IsNumeric(TextBox1.Value), "Zahl", "Keine Zahl")
MsgBox result

Beispiel 2: Verwendung von GoTo für Fehlerbehandlung

Private Sub CommandButton1_Click()
    On Error GoTo Fehler
    ' Dein Code
    Exit Sub
Fehler:
    MsgBox "Ein Fehler ist aufgetreten!"
End Sub

Tipps für Profis

  • Vermeide die Verwendung von GoTo, wenn möglich. Stattdessen können strukturierte Kontrollflüsse wie If...Then, Select Case oder Schleifen verwendet werden.
  • Nutze On Error-Anweisungen für eine bessere Fehlerbehandlung.
  • Wenn Du Sprungmarken verwendest, stelle sicher, dass Du die Logik des Codes klar und verständlich hältst, um Verwirrung zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich IIf mit GoTo kombinieren?
Nein, IIf gibt einen Wert zurück und sollte nicht mit GoTo verwendet werden. Verwende stattdessen If...Then.

2. Wo verwende ich Sprungmarken sinnvoll?
Sprungmarken können in speziellen Fällen wie Fehlerbehandlung oder komplexen Logiken nützlich sein, sollten jedoch sparsam eingesetzt werden.

3. Was ist der Nachteil von GoTo?
GoTo kann den Code unübersichtlich machen und die Nachvollziehbarkeit erschweren. Es ist besser, strukturierte Programmieransätze zu nutzen.

4. Welche Excel-Version benötige ich für VBA?
VBA ist in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2010, 2013, 2016, 2019 und Microsoft 365.

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