Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1760to1764
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

Doppeleingabe mit Laufzeitfehler 1004

Doppeleingabe mit Laufzeitfehler 1004
19.05.2020 20:02:30
Joseph
Hallo, bei Ausführungn des Script kommt es zu einemLaufzeitfehler 1004, wenn eine Eingabe (hier Kennzeichen) versehentlich noch einmal eingegeben wird, obwohl in Script eine Fehlerbehandlung diesbezüglich vorliegt. Das ganzer passiert aber nur, wenn ein Sonderzeichen, Leerzeichen (Kennzeichen) vorliegt. Bei Zusammenhängender Schreibweise funktioniert es. Beispiel : Eingabe HH-AA 1, funktioniert, Tabelle(X) wird kopiert und so genannt. Wenn ich jetzt nochmals HH-AA 1 eingebe, kommt der Laufzeitfehler 1004. Schreibe ich das Kennzeichen zusammen HHAA1 und versuche es nochmals einzugeben, dann kommt die Fehlermeldung vom Script "kennzeichen schon vorhanden". So soll es ja auch sein, Der Fehler schein also auf den Sonderzeichen, Leerzeichen zu beruhen, Habe mir überlegt, über replace usw. nach der >Eingabe, den Bindestrich und das Leerzeichen zu entfernen, jedoch leidet die Lesbarkeit darunter. Kann mir jemand helfen?
https://www.herber.de/bbs/user/137635.xlsm
Sub KfzEintragen()
Dim blnFalsch As Boolean
Dim strName As String
Dim arrFalsch()
Dim bytFalsch As Byte
arrFalsch = Array("*", "[", "]", "/", "\", "?")
strName = InputBox("Kennzeichen des neuen Kfz:", "Kennzeichen eingeben")
'Dim TXT$
'TXT = strName
' TXT = Replace(TXT, " ", "")
' TXT = Replace(TXT, "-", "")
' MsgBox TXT
'strName = TXT
If strName = "" Then
MsgBox "Es wurde kein Kennzeichen eingegeben!"
blnFalsch = True
Else
If IsError(Evaluate(strName & "!A1")) Then
If Len(strName) > 10 Then
MsgBox "Maximal 10 Zeichen erlaubt"
blnFalsch = True
Else
For bytFalsch = 0 To 5
If InStr(strName, arrFalsch(bytFalsch)) > 0 Then
MsgBox "Unerlaubte Zeichen enthalten"
blnFalsch = True
Exit For
End If
Next bytFalsch
End If
Else
Application.DisplayAlerts = False
MsgBox "Kfz schon vorhanden"
blnFalsch = True
End If
End If
If blnFalsch = False Then
Sheets("X").Copy After:=Sheets("X")
ActiveSheet.Name = strName
'ActiveSheet.Range("C3") = strName
MsgBox "Kfz erfolgreich eingetragen!"
With Worksheets("DatenKfz")
.Cells(.Cells(.Rows.Count, "A").End(xlUp).Row + 1, "A").Value = strName
End With
Application.DisplayAlerts = True
End If
Sheets("Eintrag").Select
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppeleingabe mit Laufzeitfehler 1004
19.05.2020 20:22:25
Regina
Hi,
meiner Meinung nach müsstest Du IsError auf False abfragen:
If IsError(Evaluate(strName & "!A1")) = False Then
Ich konnte beim Testen auch nicht nachvollzeihen, dass bei einer Schreibweise ohen Bindestrich und Leerzeichen alles wie gewünscht funktionierte?
Gruß Regina
AW: Doppeleingabe mit Laufzeitfehler 1004
19.05.2020 21:17:26
Joseph
Danke für die Antwort erstmal, also bei mir funktioniert es, wenn ich kein Bindestrich und kein Leerzeichen habe? Seltsam! Wenn ich deinen Vorschlag nehme und ... = False setze, dann kann ich gar nichts eingeben, dann kommt die Script Meldung "Kennzeichen schon vorhanden" obwohl noch nichts eingetragen wurde.
Aber wie Du bestimmt aus meinem Profil erkennen kannst, bin ich nicht gerade der Spezialist hier :-(
Gruß
Anzeige
AW: Doppeleingabe mit Laufzeitfehler 1004
19.05.2020 21:56:53
Regina
... sorry, da hatte ich "falsch herum" gedacht...
Der andere Lösungsansatz mit den Hochkommata ist natürlich richtig.
Gruß Regina
AW: Doppeleingabe mit Laufzeitfehler 1004
20.05.2020 06:07:51
Joseph
Trotzdem Danke für die Hilfe!
AW: Doppeleingabe mit Laufzeitfehler 1004
19.05.2020 21:09:18
onur
Du hast mehrere Denkfehler:
Du hast keine Überprüfung auf Groß- oder Kleinbuchstaben bzw deren Umwandlung auf grosse Buchstaben mittels UCase - deswegen passiert Folgendes: wenn man "k ab 1000" eingibt, wird das eingetragen und ein neues Blatt wird erstellt. Wenn man dann "K AB 1000 eingibt", erkennt dein Cpode dieses als neuen Eintrag an und versucht, ein neues Blatt zu erstellen. Da es EXCEL aber egal ist, ob Blattnamen gross oder klein geschrieben sind, kommt die Fehlermeldung (einfach mal auf "Debuggen klicken"), dass das Blatt schon existiert.
Ausserdem akzeptiert dein Code sogar "11 11 1111" als KFZ-Kennzeichen.
Was soll das hier eigentlich:
Sheets("X").Copy After:=Sheets("X")

Nachher hast du jede Menge Blätter die "X", X (2), X (3) usw heissen. Wozu?
Anzeige
AW: Doppeleingabe mit Laufzeitfehler 1004
20.05.2020 06:05:48
Joseph
Danke für die kritische Bemerkungen, habe mich erstmal um dieses genannte Problem gekümmert, werde mich aber, mit meinem bescheidenene Wissen, den anderen Baustellen auch annehmen. Aber z.B Eingabe 11 11 1111" als KFZ-Kennzeichen, wird nicht angenommen. Sheets("X").Copy After:=Sheets("X") Nimmt das Blatt X als Vorlage, kopiert das, diese Blatt wird umbenannt, wenn nicht vorhanden, wird das Blatt Eintrag umbenannt.
AW: Doppeleingabe mit Laufzeitfehler 1004
19.05.2020 21:11:37
Daniel
Hi
nun deine Vermutung ist richtig. Das Problem sind die Leerzeichen im Tabellenblattnamen.
Wenn du schon etwas Erfahrung hast, sollte dir aufgefallen sein, dass bei Formeln, die Bezüge auf andere Tabellenblätter haben und deren Blattnamen Leer- oder sonstige Sonderzeichen enthalten, der Name des Tabellenblatts in Hochkommas gesetzt wird.
dh der Zellbezug in der Formel auf das Blatt "HH-AA 1" muss so aussehen: ='HH-AA 1'!A1
in Excel muss man sich da nicht drum kümmern, denn Excel ergänzt diese Hochkommas automatisch.
in VBA simuliert das EVALUATE die Excelzelle, daher wird auch hier das Hochkomma bei solchen Tabellenblattnamen benötigt, nur leider funktioniert hier die Automatik nicht, daher muss man sie selber hinzufügen.
Da die Hochkommas nicht schaden, wenn sie überflüssig sind, sollte man sie immer bei variablen Tabellenblattnamen verwenden:
If IsError(Evaluate("'" & strName & "'!A1")) Then
Gruß Daniel
Anzeige
AW: Doppeleingabe mit Laufzeitfehler 1004
20.05.2020 06:11:52
Joseph
Super, das war es (fehlendes Wissen ist reichlich vorhanden bei mir) Danke auch für die Erläuterungen hierzu. Werde deine Fähigkeiten bestimmt nochmals benötigen :-)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige