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

Makro mit InputBox abbrechen

Forumthread: Makro mit InputBox abbrechen

Makro mit InputBox abbrechen
16.08.2002 21:15:00
Ewald
Hallo zusammen,

wenn im nachfolgenden VBA-Code die InputBox leer ist und auf
die Taste "Abbrechen" geklickt wird soll das Makro abbrechen.
Ich habe mit: If dInput = "" Then Exit Sub probiert, funktioniert nicht.

Sub FindenEinfuegen()
Dim wks(1 To 2) As Worksheet
Dim rng As Range
Dim dInput As Double
Dim iWks As Integer
Dim sRng As String
Worksheets("Deckblatt").Select
Application.ScreenUpdating = False
Set wks(1) = Worksheets("Tabelle1")
Set wks(2) = Worksheets("Tabelle2")
dInput = Application.InputBox( _
prompt:="Geben Sie eine Variante ein:", _
Title:="Versuchsglieder", _
Type:=1)
If dInput = "" Then Exit Sub
For iWks = 1 To 2
Set rng = wks(iWks).Cells.Find(dInput, lookat:=xlWhole, LookIn:=xlValues)
If Not rng Is Nothing Then
sRng = rng.Address
rng.Offset(1, 0).EntireRow.Insert
Do
Set rng = wks(iWks).Cells.FindNext(rng)
If rng.Address <> sRng Then
rng.Offset(1, 0).EntireRow.Insert
Else
Exit Do
End If
Loop
End If
Next iWks
End Sub

Kann mir jemand helfen?
Viele Dank.

Grüße

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: Makro mit InputBox abbrechen
16.08.2002 21:32:57
Antwort
Hallo,

beim Klick auf die Abbrechen-Schaltfläche gibt INPUTBOX den Wert FALSE zurück. Du mußt deine Abfrgae also dahingehend ändern.

Gruss

Andreas

Re: Makro mit InputBox abbrechen
16.08.2002 21:40:20
Andreas
Sorry,

das mit der Rückgabe von False gilt für für die Inputbox-Methode.
Die Inputbox-Funktion gibt beim Abbrechen eine Null-Zeichenfolge zurück.
Du must die Abfrage also folgendermassen ändern:
If dInput = vbNullString Then Exit Sub

Gruss

Andreas

Anzeige
Re: Makro mit InputBox abbrechen
16.08.2002 23:47:06
L.Vira
Application.Inputbox gibt bei Abbruch False zurück!
Wenn du also sowohl den Abbruch(False)als auch den Rückgabewert
(bei dir Zahl) auswerten willst, musst du

Dim dInput As Variant
und nicht
Dim dInput As Double
deklarieren.

;
Anzeige

Infobox / Tutorial

Makro mit InputBox abbrechen in Excel VBA


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Modul erstellen: Klicke mit der rechten Maustaste auf „VBAProject (dein Arbeitsblattname)“, wähle „Einfügen“ und dann „Modul“.

  3. Code eingeben: Füge den folgenden Code in das Modul ein:

    Sub FindenEinfuegen()
        Dim wks(1 To 2) As Worksheet
        Dim rng As Range
        Dim dInput As Variant ' Ändere hier den Datentyp
        Dim iWks As Integer
        Dim sRng As String
    
        Worksheets("Deckblatt").Select
        Application.ScreenUpdating = False
    
        Set wks(1) = Worksheets("Tabelle1")
        Set wks(2) = Worksheets("Tabelle2")
    
        dInput = Application.InputBox( _
            prompt:="Geben Sie eine Variante ein:", _
            Title:="Versuchsglieder", _
            Type:=1)
    
        If dInput = vbNullString Then Exit Sub ' Abbrechen abfangen
    
        For iWks = 1 To 2
            Set rng = wks(iWks).Cells.Find(dInput, lookat:=xlWhole, LookIn:=xlValues)
            If Not rng Is Nothing Then
                sRng = rng.Address
                rng.Offset(1, 0).EntireRow.Insert
                Do
                    Set rng = wks(iWks).Cells.FindNext(rng)
                    If rng.Address <> sRng Then
                        rng.Offset(1, 0).EntireRow.Insert
                    Else
                        Exit Do
                    End If
                Loop
            End If
        Next iWks
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro über ALT + F8 aus.


Häufige Fehler und Lösungen

  • Fehler: Das Makro wird nicht abgebrochen, wenn die InputBox geschlossen wird.

    • Lösung: Stelle sicher, dass du den Datentyp von dInput auf Variant änderst. So kannst du sowohl Zahlen als auch den Rückgabewert False abfangen.
  • Fehler: Die InputBox gibt einen unerwarteten Wert zurück.

    • Lösung: Überprüfe, ob du die richtige Type-Nummer in der InputBox-Funktion verwendest. Der Typ 1 bedeutet, dass nur Zahlen erwartet werden.

Alternative Methoden

Eine alternative Methode zur Verwendung der InputBox könnte die Verwendung eines Formulars (UserForm) sein, das mehr Flexibilität bietet, um Eingaben zu erhalten und die Abbrechen-Schaltfläche zu handhaben. Mit einer UserForm kannst du die Abbruchbedingungen besser gestalten und das Benutzererlebnis verbessern.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du die InputBox verwenden kannst, um Benutzereingaben zu erhalten und das Makro bei Bedarf abzubrechen:

Sub BeispielInputBox()
    Dim userInput As Variant
    userInput = Application.InputBox("Bitte eine Zahl eingeben:", "Eingabe")

    If userInput = False Then
        MsgBox "Aktion abgebrochen", vbInformation
        Exit Sub
    End If

    MsgBox "Eingegebene Zahl: " & userInput
End Sub

In diesem Beispiel wird das Makro abgebrochen, wenn der Benutzer auf die Abbrechen-Schaltfläche klickt.


Tipps für Profis

  • Verwende On Error Resume Next, um Fehler durch ungültige Eingaben zu handhaben.
  • Integriere eine Benutzerführung in deine InputBox, um den Benutzern zu helfen, was genau eingegeben werden soll.
  • Teste deine Makros gründlich, um sicherzustellen, dass alle Eingaben korrekt verarbeitet werden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die InputBox immer einen gültigen Wert zurückgibt?
Du kannst eine Schleife verwenden, um die Eingabe zu wiederholen, solange der Benutzer keinen gültigen Wert eingibt.

2. Was passiert, wenn der Benutzer die InputBox schließt, ohne etwas einzugeben?
Die InputBox gibt False zurück, wenn der Benutzer auf Abbrechen klickt. Stelle sicher, dass du dies in deiner Abfrage überprüfst, um das Makro abzubrechen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige