Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1916to1920
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

Makro Abbruch

Makro Abbruch
18.01.2023 17:48:42
Dirk
Hallo zusammen,
ich habe folgendes Makro
Sub ProjektTest()
Dim varInput As String
varInput = Application.InputBox("Bitte den Namen des Kunden eintragen", "Eingabe Kundenname", Default) & "*"
If varInput = "" Then 
Exit Sub
End If
Columns("P:P").Select
Selection.AutoFilter Field:=1, Criteria1:=varInput
Cells.Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Columns("X:X").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
End Sub

Das Makro soll nun nicht weiterlaufen, wenn in der Input Box kein Eintrag erfolgt oder auf ABBRECHEN geklickt wird. Gibt es da eine Möglichkeit? Dachte, das hätte ich mit der Anweisung
If varInput = "" Then
Exit Sub
End If
erledigt, aber das Makro läuft trotzdem weiter. Gibt es außerdem noch die Möglichkeit eine Message Box aufploppen zu lassen, wenn kein Eintrag erfolgt oder auf Abbrechen geklickt wird?
Danke für Eure Unterstützung.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Abbruch
18.01.2023 18:23:14
Daniel
Hi
das hat hier mehrere Gründe:
zum einen hängst du ja an den Text der Eingabe sofort das Zeichen "*" an.
dh die Variable kann gar nicht leer sein, sondern enthält immer mindestens das Zeichen "*", auch wenn du nichts eingibst.
Das hast du aber selbst so programmiert und das müsste dir auch auffallen, wenn du deinen Code mal mit Verstand durchliest.
der nächste Punkt ist folgender:
wenn du bei Application.Inputbox "Abbrechen" drückst, dann bekommst du als Rückgabewert FALSE, also einen Wahrheitswert.
Weil du aber die aufnehmende Variable nicht nur als String deklariert hast, sondern auch den Rückgabewert sofort als String verwendest (noch bevor er der Variablen zugewiesen wird) muss VBA aus dem Boolschen FALSE einen Text machen und wandelt in "Falsch" um.
Daher hast du beim Abbrechen den Text "Falsch" und auch wenn du nichts eingibst immer den "*" in der Variable.
also wenn, dann so:
Sub ProjektTest()
Dim varInput As Variant
varInput = Application.InputBox("Bitte den Namen des Kunden eintragen", "Eingabe Kundenname", Default)
If VarType(varInput) = vbBoolean Then
    Exit Sub 'abbruch
End If
If varInput = "" Then
    Exit Sub 'nichts eingegeben
End If
varInput = varInput & "*"
Columns("P:P").Select
Gruß Daniel
Anzeige
AW: Makro Abbruch
19.01.2023 13:11:42
Dirk
Danke, Daniel. Das funktioniert super.
AW: Makro Abbruch
18.01.2023 19:11:45
Yal
Hallo Dirk,
als String-Variable geht es auch, man muss nur sciherstellen, dass daraus ein String gemacht wird und diese Wert prüfen.
2 Beschränkung:
es wäre blöd, wenn ein Kunde tatsächlich "Falsch" heisst (kann man, glaube ich, auschliessen),
wenn diese Code auf einem Rechner läuft, der nicht auf Deutsch gestellt ist. Es würde "False" oder anderes, aber eben nicht "Falsch" rauskommen.
übrigens:
die .. .Select gefolgt von Selection. .. sind dem Makrorekorder geschuldet. Um dein Code leichter zu machen, kannst du diesen abkürzen.
If ohne Else-Anteil kannst Du in einer Zeile ohne End If schreiben.
(kann, muss aber nicht)
Sub ProjektTest()
Dim varInput As String
    varInput = CStr(Application.InputBox("Bitte den Namen des Kunden eintragen", "Eingabe Kundenname", Default))
    If varInput = "Falsch" Or varInput = "" Then Exit Sub
    
    Columns("P:P").AutoFilter Field:=1, Criteria1:=varInput
    
    Cells.Copy
    Workbooks.Add
    ActiveSheet.Paste
    
    Columns("X:X").SpecialCells(xlCellTypeBlanks).Select 'nach Workbook.Add ist die ActiveSheet im neuen Wb. Diese Auswahl erfolgt dort
End Sub
VG
Yal
Anzeige
AW: Makro Abbruch
19.01.2023 13:12:42
Dirk
Danke, Yal. Auch das funktioniert. Ich teste jetzt mal, welche Version ich nehme.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige