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

Forumthread: If Abfrage mit Input-Box

If Abfrage mit Input-Box
02.09.2005 14:35:11
Thomas
Liebe VBA-Freunde!
Ich habe folgenden VBA-Code geschrieben, der nicht ganz funktioniert

Private Sub CommandButton2_Click()
Dim s As Integer
On Error GoTo fehler
s = InputBox("Geben Sie die Vertreternummer ein, dessen Arbeitsmappe neu erstellt werden soll!")
If s = 1 Then
Sheets("01 Seidenschwarz").Select
Sheets("01 Seidenschwarz").Unprotect "aaa"
Application.OnTime Now + TimeValue("00:00:01"), "FormelTeil1"
End If
If s = 2 Then
Sheets("02 Frey").Select
Sheets("02 Frey").Unprotect "aaa"
Application.OnTime Now + TimeValue("00:00:01"), "FormelTeil1"
End If
fehler:
MsgBox "Achtung!"
Exit Sub
End Sub

Der Code soll folgendes bewirken.
Durch Drücken des Commandobutton soll die Input-Box kommen,
was auch funktioniert.
Danach habe ich die Auswahl zwischen 1 und 2.
Tippe ich 1 oder 2 ein, so wird der Makro ausgeführt.
Jedoch kommt zusätzlich auch die Meldung "Achtung". Das soll nicht sein,
weil ich ja 1 oder 2 vorgegeben habe.
Gebe ich nichts ein, oder breche ab, so kommt die Fehlermeldung "Achtung!".
Das ist wieder richtig.
Wie muß der Quellcode richtig lauten, damit, wenn ich ich 1 oder 2
eingebe, der Makro ohne Meldung "Achtung" ausgeführt wird.
Außerdem soll, wenn ich gar nichts eingebe oder abbreche ebenfalls "Achtung"
erscheinen und der Makro dann natürlich nicht ausgeführt werden.
Danke für die Hilfe
Thomas
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: If Abfrage mit Input-Box
02.09.2005 14:49:15
Wolfgang
Hallo,
dein Makro landet immer am Ende bei der MsgBox, das on Error bringt hier nix.
Probier mal mit
if s=1
else if s=2
else MsgBox - exit sub
lg
Wolfgang
AW: If Abfrage mit Input-Box
02.09.2005 14:49:39
IngGi
Hallo Thomas,
1. Damit die MsgBox nicht jedesmal ausgegeben wird, muss die Exit Sub-Anweisung vor die Fehlerbehandlung.
2. Eine andere Angabe als 1 oder 2 in der Input-Box löst keinen Fehler aus. Mit der Fehlerbehandlung kommst du daher nicht zum Ziel.
Versuch mal folgendes:

Private Sub CommandButton2_Click()
Dim s As Integer
s = InputBox("Geben Sie die Vertreternummer ein, dessen Arbeitsmappe neu erstellt werden soll!")
If s = 1 Then
Sheets("01 Seidenschwarz").Select
Sheets("01 Seidenschwarz").Unprotect "aaa"
Application.OnTime Now + TimeValue("00:00:01"), "FormelTeil1"
Elseif s = 2 Then
Sheets("02 Frey").Select
Sheets("02 Frey").Unprotect "aaa"
Application.OnTime Now + TimeValue("00:00:01"), "FormelTeil1"
Else
MsgBox "Achtung!"
End If
End Sub
Gruß Ingolf
Anzeige
AW: If Abfrage mit Input-Box
02.09.2005 15:47:06
Thomas
Hallo Ingo!
Funktioniert fast!
Nur wenn ich die Input-Box aufrufe und dann wieder abbreche, meckert VBA
"Typen unverträglich". Das müsste auch noch abgefangen werden.
kanns du mir weiterhelfen?
Thomas
AW: If Abfrage mit Input-Box
02.09.2005 15:57:19
Nepumuk
Hallo Ingolf,
so?
Private Sub CommandButton2_Click()
    Dim s As String
    s = InputBox("Geben Sie die Vertreternummer ein," & _
        " dessen Arbeitsmappe neu erstellt werden soll!")
    If s = "1" Then
        Sheets("01 Seidenschwarz").Select
        Sheets("01 Seidenschwarz").Unprotect "aaa"
        Application.OnTime Now + TimeValue("00:00:01"), "FormelTeil1"
    ElseIf s = "2" Then
        Sheets("02 Frey").Select
        Sheets("02 Frey").Unprotect "aaa"
        Application.OnTime Now + TimeValue("00:00:01"), "FormelTeil1"
    ElseIf StrPtr(s) = 0 Then
        MsgBox "Abgebrochen"
    Else
        MsgBox "Achtung!"
    End If
End Sub

Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
AW: If Abfrage mit Input-Box
02.09.2005 16:03:16
IngGi
Hallo Nepumuk,
ich nehme an, die Frage geht an Thomas und nicht an mich?
Gruß Ingolf
AW: If Abfrage mit Input-Box
02.09.2005 16:10:44
Nepumuk
Hallo Ingolf,
sorry, habe beim Eigeben nur noch deinen Namen gelesen.
Gruß
Nepumuk
Excel & VBA – Beispiele
AW: Funktionier - Vielen Dank
02.09.2005 16:27:50
Thomas
Hallo Ingo, hallo Nepomuk
Funktioniert! Vielen Dank für die Hilfe!!!
Thomas
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

If-Abfrage mit Input-Box in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul hinzu, indem du im Projektfenster mit der rechten Maustaste auf „VBAProject“ klickst und „Einfügen“ > „Modul“ wählst.
  3. Kopiere den folgenden Code in das Modul:
Private Sub CommandButton2_Click()
    Dim s As String
    s = InputBox("Geben Sie die Vertreternummer ein, dessen Arbeitsmappe neu erstellt werden soll!")

    If s = "1" Then
        Sheets("01 Seidenschwarz").Select
        Sheets("01 Seidenschwarz").Unprotect "aaa"
        Application.OnTime Now + TimeValue("00:00:01"), "FormelTeil1"
    ElseIf s = "2" Then
        Sheets("02 Frey").Select
        Sheets("02 Frey").Unprotect "aaa"
        Application.OnTime Now + TimeValue("00:00:01"), "FormelTeil1"
    ElseIf StrPtr(s) = 0 Then
        MsgBox "Abgebrochen"
    Else
        MsgBox "Achtung!"
    End If
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Füge einen Button zu deinem Arbeitsblatt hinzu und weise ihm das Makro CommandButton2_Click zu.

Häufige Fehler und Lösungen

  • Fehler: "Achtung!" wird immer angezeigt.

    • Stelle sicher, dass die ElseIf-Bedingungen korrekt sind und dass die MsgBox nur bei ungültigen Eingaben angezeigt wird.
  • Fehler: "Typen unverträglich".

    • Dieser Fehler tritt auf, wenn der Benutzer die Input-Box abbricht. Stelle sicher, dass du die Eingabe als String behandelst.
  • Lösung für Input-Box Abbruch:

    • Verwende StrPtr(s) = 0, um zu prüfen, ob der Benutzer die Eingabe abgebrochen hat.

Alternative Methoden

  • Verwendung von Select Case: Ein alternativer Ansatz könnte die Verwendung von Select Case sein, um die Eingaben zu überprüfen:
Select Case s
    Case "1"
        ' Code für Fall 1
    Case "2"
        ' Code für Fall 2
    Case Else
        MsgBox "Achtung!"
End Select
  • Benutzerdefinierte Formulare: Du kannst auch ein benutzerdefiniertes UserForm erstellen, um die Eingabe zu vereinfachen und die Benutzererfahrung zu verbessern.

Praktische Beispiele

Hier ist ein Beispiel, wie du den Code für ein Arbeitsblatt verwenden kannst:

  1. Erstelle zwei Arbeitsblätter in deiner Excel-Datei: „01 Seidenschwarz“ und „02 Frey“.
  2. Schütze die Arbeitsblätter mit dem Passwort „aaa“.
  3. Füge einen Button hinzu und weise den oben genannten Code zu.
  4. Teste die Funktion, indem du verschiedene Werte in die Input-Box eingibst.

Tipps für Profis

  • Eingabevalidierung: Stelle sicher, dass die Eingaben validiert werden, um unerwartete Fehler zu vermeiden. Du kannst die Eingaben mit Funktionen wie IsNumeric überprüfen.

  • Debugging: Nutze Debug.Print, um den Wert von Variablen während der Ausführung deines Codes zu überwachen.

  • Fehlerbehandlung: Implementiere eine umfassende Fehlerbehandlung, um unerwartete Situationen zu verwalten und den Benutzer über Probleme zu informieren.


FAQ: Häufige Fragen

1. Was ist eine Input-Box in VBA?
Eine Input-Box ist ein einfaches Dialogfeld, das den Benutzern ermöglicht, Daten in eine Anwendung einzugeben.

2. Wie kann ich sicherstellen, dass die Eingabe nur Zahlen sind?
Du kannst die Funktion IsNumeric verwenden, um zu überprüfen, ob die Eingabe eine Zahl ist.

3. Was passiert, wenn der Benutzer die Input-Box abbricht?
Wenn die Input-Box abgebrochen wird, kannst du dies mit StrPtr(s) = 0 abfangen und eine entsprechende Meldung anzeigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige