Anzeige
Archiv - Navigation
1852to1856
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
InputBox bei Cancel drücken
04.11.2021 17:31:20
Beni
Hallo allerseits
Ich brauche einen Input betreffend untenstehendem Code. Dieser kopiert mir das aktuelle Sheet an den Anfang der Arbeitsmappe und fragt nach einem Namen für das Sheet.
Funktioniert alles wie gewünscht, außer wenn ich bei der Eingabe des Namens auf abbrechen klicke...dann kommt eine Fehlermeldung. Wünschenswert wäre, wenn dann das Sheet nicht kopiert wird.
Habs bereits mit diesem Zusatz probiert,

Do
' shtname = InputBox("Enter Sheet Name", "Sheet Name") -- mit der InputBox von Code unten
If StrPtr(shtname) = 0 Then Exit Sub
Loop Until Len(shtname)  > 0
aber brings nicht korrekt zum laufen

Sub CopySheet()
Dim i As Integer, x As Integer
Dim shtname As Variant
ActiveSheet.Copy Before:=Sheets(1)
shtname = InputBox("Bezeichnung des neuen Blatts eingeben" & vbLf & "(z.B. Typ xy)", "Neues Blatt anlegen")
ActiveSheet.Name = shtname
Call foo   'dort kommen 2 weitere InputBoxen zum Ausfüllen, funktioniert soweit!
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: InputBox bei Cancel drücken
04.11.2021 18:12:55
volti
Hallo Beni,
funktioniert doch tadellos.
Die Aussage "Kommt Fehlermeldung" ist allerdings unbrauchbar, woher sollen wir wissen, welcher Fehler aufgetreten ist.
Zur Sicherheit könntest Du noch eine Leerzeicheneingabe verhindern und, wenn bei Abbruch keine Kopie gemacht werden soll, die Reihenfolge etwas umstellen.....
Code:

[Cc]

Sub CopySheet() Dim i As Integer, x As Integer Dim shtname As String Do shtname = InputBox("Bezeichnung des neuen Blatts eingeben" & vbLf _ & "(z.B. Typ xy)", "Neues Blatt anlegen") If StrPtr(shtname) = 0 Then Exit Sub Loop Until Len(Trim$(shtname)) > 0 ActiveSheet.Copy Before:=Sheets(1) ActiveSheet.Name = shtname Call foo 'dort kommen 2 weitere InputBoxen zum Ausfüllen, funktioniert soweit! End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: InputBox bei Cancel drücken
04.11.2021 19:26:43
B
Ha, perfekt! Jetzt funktionierts.
Zusatzfrage: Kann ich das so anpassen, dass ich das Sheet trotz 'Arbeitsmappe schützen' mit diesem Code kopieren kann? Jetzt gehts nicht, wenn der Schutz aktiv ist. Möchte das eine Originalblatt eben als Vorlage sichern in der Arbeitsmappe.
Ggf. wäre es auch besser geeignet, bloß das Vorlageblatt im VBA irgendwo zu schützen (möglich?), anstatt über den gängigen Excel/Arbeitsmappe_schützen Befehl (habe noch 2 andere Sheets in der Mappe, die ich zwingend schützen möchte).
AW: InputBox bei Cancel drücken
04.11.2021 19:52:10
volti
Bei geschützten Workbooks und/oder Worksheets nimmst Du erst den Schutz raus, führst Deine Aktionen durch und setzt den Schutz wieder.
Ggf. auch mit Passwort.
ActiveSheet.Protect
ActiveWorkbook.Protect
ActiveSheet.Unprotect
ActiveWorkbook.Unprotect
Nimm das doch einfach nach Deinen Wünschen mit dem Makrorecorder auf und passe es an....
Gruß
Karl-Heinz
Anzeige
AW: InputBox bei Cancel drücken
04.11.2021 21:58:19
B
Super, danke dir! Klappt wie gewünscht.
AW: InputBox bei Cancel drücken
04.11.2021 18:26:46
Daniel
HI
probiers mal so:
shtname = Application.InputBox("Bezeichnung des neuen Blatts eingeben" & vbLf & "(z.B. Typ xy)", "Neues Blatt anlegen", Type:=2)
if VarType(shtname) = vbBoolean then Exit Sub

Application.Inputbox ist die Inputbox von Excel, bei der man zusätzlich auswählen kann, ob man Zahl, Text oder einen Zellbereich eingeben will.
Sie unterscheidet sich auch etwas im Rückgabeverhalten von der "normalen" VBA-inputbox, in dem sie nämlich die Boolsche Variable FALSE als Ergenbis zurück gibt, wenn man abbrechen drückt.
Wenn das mit dem StrPtr (was immer das auch ist) nicht funktioniert, dann probiers mal so.
Gruß Daniel
Anzeige

130 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige