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

VBA Code enthält einen Fehler

VBA Code enthält einen Fehler
02.04.2017 06:12:41
Frank
Hallo und guten Morgen zusammen,
habe vor langer Zeit mal eine Datei zur Arbeitszeiterfassung unter Mithilfe von Excel-Profis erstellt,die auch VBA enthält und wunderbar funktioniert.Nun möchte ich diesen Code um ein Tabellenblatt erweitern,was ich getan hab und wo der Code auch zu 50% funktioniert.Aber irgendwie steckt noch ein Fehler drin.
Kurzbeschreibung: Tabellenblatt "Blanko" :Mit betätigen der Schaltfläche "neuer Monat" wird das Blatt kopiert,die Vorlage versteckt und über Auswahl Dropdownmenü in Zelle B4 in entsprechenden Monat unbenannt. Nun habe ich einen Tagesbericht erstellt,den ich ebenfalls kopieren möchte,der dann auch versteckt wird und bei Eingabe des Datums in B1 entsprechend umbenannt werden soll. Bis auf die Eingabe des Datums funktioniert auch alles soweit,aber dann stürzt Excel ab.
Wer kann mir helfen,den Fehler im Code von Tabelle 9 zu finden?
Habe mal ein Bild mit den VBA Codes hier hochgeladen,ich hoffe es war richtig so
Userbild
Lg Frank

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code enthält einen Fehler
02.04.2017 06:23:03
Hajo_Zi
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Schau mal hier
Eine hochgeladene Arbeitsmappe erhöht die Wahrscheinlichkeit, dass Du eine Lösung für Dein Problem erhältst.
Erstelle folglich bitte eine Demomappe, aus der deine Aufgabenstellung klar erkennbar ist und lade diese Mappe mit einem aussagekräftigen Dateinamen hoch.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, solltest du diese Daten anonymisieren bzw. pseudonymisieren.
Falls Du den Download des Forums nicht benutzen möchtest beachte bitte: von unsicheren Servern file-upload lade ich keine Datei herunter (lt. Einschätzung meines Virenprogramms)
Der Code sieht ok aus.

Anzeige
AW: VBA Code enthält einen Fehler
02.04.2017 06:53:51
Crazy
Hallo
ich habe zwar zum testen jetzt nur xl2010 aber bei mir kommt kein
Fehler wenn ich in B1 ein Datum schreibe
MfG Tom
AW: VBA Code enthält einen Fehler
02.04.2017 07:17:48
Frank
Ich krieg die Krise.
Jetzt hab ich mal folgendes gemacht.Mappe geöffnet,dann hab ich ja nur beide "Blanko" Blätter.Wenn ich jetzt in B1 von Tagesbericht Blanko ein Datum eingebe,dann funktioniert es,wenn ich aber zuerst auf Neuer Monat im Tabellenblatt "Blanko" klicke und dann versuche in Zelle B1 vom Tabellenblatt "Tagesbericht Blanko(2) das Datum einzugeben,dann stürzt Excel ab.
Lg Frank
Anzeige
AW: VBA Code enthält einen Fehler
02.04.2017 07:36:01
Crazy
Hallo
ich habe jetzt in Blatt "Blanko" auf "Neuer Monat" geklickt
dann habe ich ein Blatt "Blanko(2)" und ein Blatt
"Tagesbericht Blanko(2)"
schreibe ich in B1 von "Tagesbericht Blanko(2)" ein Datum
wird "Tagesbericht Blanko(2)" in das Datum umbenannt
MfG Tom
AW: VBA Code enthält einen Fehler
02.04.2017 09:55:03
Frank
Hallo Tom,
so funktioniert es ja auch.Nur wenn ich zuerst den Monat in Blanko(2) auswähle und dann erst das Datum in Tagesbericht blanko(2),dann stürzt Excel ab.
Habe mittlerweile den Code mal geändert und dem Tagesbericht blanko(2) alleine zugewiesen d.h. Blanko wird alleine kopiert und Tagesbericht blanko wird über eine eigene Schaltfläche kopiert. Genau das gleiche Szenario.Solange ich zuerst das Datum und dann erst den Monat auswähle,gehts,mach ich´s andersrum,stürzt Excel ab.
Lg Frank
Anzeige
AW: VBA Code enthält einen Fehler
02.04.2017 07:31:57
Luschi
Hallo Frank,
Du preßt einen Datumswert in eine String-Variable.
Excel 2010/13/16 können das korrekt umwandeln, aber schreibe doch gleich statt:
s = Range("B1").Value
s = Format(s, "dd mmmm yyyy")
so:
s = Format(Target.Value, "dd mmmm yyyy")
dann erledigt die Format-Funktion die richtige Umwandlung von Datum in Text.
Gruß von Luschi
aus klein-Paris
AW: VBA Code enthält einen Fehler
02.04.2017 07:50:02
Frank
Hallo Luschi,
danke für den Tip,hat aber zunächst auch nichts gebracht und Excel stürzt ab.Habe dann mal etwas anderes probiert und siehe da,es funzt.
Und zwar bin ich bis dato hergegangen,hab im Tabellenblatt "Blanko" auf neuen Monat geklickt,beide Blätter werden kopiert,dann bin ich aufs Tabellenblatt "Blanko(2) und habe den Monat ausgewählt.Danach dann zum Blatt "Tagesbericht blanko(2) und versuche das Datum einzugeben.Dabei stürzt Excel dann ab.Wenn ich nun aber zuerst das Datum eingebe und dann den Monat auswähle,dann klappt es kurioserweise
Lg Frank
Anzeige
AW: VBA Code enthält einen Fehler
02.04.2017 16:32:10
firmus
Hallo Frank,
Du setzt zwischendurch "On Error Resume Next" und setzt es nicht mehr zurück.
Somit kann sich VBA nicht bei dir melden, wenn etwas nicht passt.
Reduziere den "On Error Resum Next" Bereich in deinem Coding auf das Mindeste.
U.U. meldet sich dann Excel mit einer Fehlermeldung, die Dich weiterbringt.
Gruß
Firmus
PS: habe es auf xls2010 und xls2013 EXAKT nach deiner Anweisung versucht - beide Male ohne Absturz.
AW: VBA Code enthält einen Fehler
02.04.2017 16:41:47
Frank
Hey Firmus,
ehrlich gesagt,hab ich den Code aus dem anderen Modul nur übernommen,und weiß eigentlich nicht was die Zeile macht. Ist nur kurios das es funktioniert,wenn ich zuerst das Datum in Tagesbericht blanko(2) schreibe.
Anzeige
AW: VBA Code enthält einen Fehler
02.04.2017 17:53:42
firmus
Hi Frank,
ich kann deinen Fehler nicht nachvollziehen.
außerdem, deine Anleitung zum Nachvollziehen ist ungenau.
Hattest Du bei dem Versuch bei dem der Fehler auftritt einen Monat im Dropdown ausgewählt bevor
Du ein neues Blanko erzeugen wolltest?
Du hast an x Stellen code stehen. Du sollst in deiner Umgebung "On Error Resum Next" auf Kommentar
setzen (überall!), und dann nochmals testen.
Bei "On Error Resum Next" bekommt VBA die Anweisung alle Fehler zu ignorieren und stur die nächste Instruktion auszuführen. Ergebnis offen. xls2003 könnte hier noch Schwachstellen haben, falls wirklich ein Fehler auftrat und VBA einfach weitermachen soll.
Sorry, bin raus denn mehr fällt mir dazu nicht ein.
Gruß
Firmus
Anzeige
AW: VBA Code enthält einen Fehler
02.04.2017 18:08:00
Frank
Hi Firmus,
habe jetzt jedes "On Error Resume Next" auf Kommentar gesetzt und nochmals gestartet.Der Code für das Tabellenblatt "Blanko" arbeitet einwandfrei.Beim Code für "Tagesbericht blanko" bekomme ich eine
Fehlermeldung:
Laufzeitfehler '-2147417848 (80010108)':
Automatisierungsfehler
Das aufgerufene Objekt wurde von den Clients getrennt.
Zur Fehlerbeschreibung: Egal ob ich beide Tabellenblätter auf einmal kopiere oder jedes einzeln,solange ich zuerst das Datum in B1 von Tagesbericht blanko(2) schreibe und dann erst den Monat in B4 von Blanko(2) läuft es,mache ich es aber umgekehrt,stürzt Excel ab.
Sorry,aber noch verständlicher kann ich es nicht beschreiben.
Lg Frank
Anzeige
AW: VBA Code enthält einen Fehler
02.04.2017 20:15:54
firmus
Hi Frank,
Fehlercode (80010108) macht es doch wieder interessant.
Ich habe jetzt auf XP/XLS2003 getestet - nicht nachvollziehbar.
Die Fehlermeldung weist u.U. darauf hin, dass die Variable "s", die den neuen Sheetname festlegt,
nicht konform zu den Excel-Regeln ist. z.B. gar nicht gefüllt, nicht erlaubte Sonderzeichen, .....
Nochmals:
1. Wenn Du die xlsfile öffnest, welches Blatt ist da das aktive Blatt
a) Blanko oder
b) Tagesbericht Blanko
2. Wenn das aktive Blatt "Tagesbericht Blanko" ist, dann klickst Du auf das Blatt "Blanko": JA/Nein?
3. Beginn deines Tests
"1. wenn ich aber zuerst auf Neuer Monat im Tabellenblatt "Blanko" klicke...."
Zu diesem Zeitpunkt besteht die Möglichkeit in B4 in "blanko" (Dropdown) einen Monat auszuwählen.
a) Wählst Du einen Monat aus? JA/Nein, bei JA: welchen Monat
b) Bevor Du auf "Neuer Monat" klickst, was steht zu diesem Zeitpunkt in B4?
4. Nach dem Klick auf "neuer Monat" werden 2 neue Blätter erzeugt:
a) Wie lauten danach die beiden Blattnamen?
Erstes Blatt "Blanko (2)" und Zweites Blatt "Tagesbericht Blanko (2)"
b) Sind es diese beiden Namen? Ja/Nein
c) Sind sie auch in dieser Reihenfolge? Ja/Nein
d) Welches der beiden Blätter ist das aktive Blatt (wird angezeigt)?
5. Im Blatt "Tagesbericht Blanko (2)" willst Du in B1 ein Datum eingeben.
was genau kannst Du noch durchführen bevor Excel abstürzt?
a) Mausklick auf B1, Excel läuft noch? Ja/nein
b) Eintippen eines Datums (noch nicht Datenfreigabe!!!) Excel läuft noch? Ja/Nein
c) Enter-Taste, nach der Eingabe des vollständigen Datums, Excel läuft dann noch? Ja/Nein
zu b) Welches Datum gibst Du ein? Bitte hier in gleicher Form eingeben.
Mit dem Ergebnis zu diesen Fragen bitte nochmals melden, mal sehen .....
Meine Vermutung:
Der Fehler liegt bei den Befehlen zum Blatt kopieren / Blattnamen ändern.
Die Variable "s" könnte verantwortlich sein. Wenn diese nicht xls-konformen Inhalt hat, dann... ?
Wenn ich einem Blatt via VBA einen neuen Namen gebe, der nicht xls-konform ist, kann ich einen Ablauffehler forcieren. In Excel 2013 bekomme ich den Laufzeitfehler "1004".
xls2003 arbeitet vllt. noch nicht so akkurat in den Fehlerbehandlungen, deshalb der Fehler "800...".
Google search mit 80010108 ergab viele Treffer, einen gut vergleichbaren.
http://microsoft.newsgroups.archived.at/public.excel.programming/200710/071018113010.html
Tipps für weiteres, genaueres testen:
1. Setze "Application.ScreenUpdating = False" auf TRUE
2. Setze in JEDEM Makro die erste Instruktion als Haltepunkt (anklicken + F9)
3. Starte deinen Test - er bleibt bei der ersten Instruktion stehen - und arbeite mit F8(Debug), um
nach jeder einzelnen Instruktion anzuhalten.
4. So ermittelst Du die exakte Instruktion, bei der xls crashed.
5. Bist Du mit den "überwachungsausdrücken" vertraut. Damit kann man sich den Inhalt der Variablen
zum Laufzeitpunkt anzeigen.
Gruß
Firmus
Anzeige
AW: VBA Code enthält einen Fehler
02.04.2017 21:07:26
Frank
Hi Firmus,
Zu 1. Egal welches,habs mit beiden versucht.
Zu 2. Ja
Zu 3. a) Ja,habs mit März und April versucht.
b) Nichts
Zu 4. a) Blanko (2) und Tagesbericht blanko (2)
b) Ja
c) Ja
d) Tagesbericht blanko (2)
Zu 5. a) Ja
b) Ja
c) Ja
zu b) 04.04.2017
Anmerkung Solange ich vorgehe wie in Punkt 5 und im Tabellenblatt "Blanko (2)" keinen Monat auswähle,läuft Excel problemlos weiter.
Habe die Haltepunkte gesetzt und getestet,muss ich aber nochmal in Ruhe anschauen. Was ich jedoch sagen kann,in meiner anderen Variante,wo ich Tabellenblatt "Tagesbericht blanko" über eine separate Schaltfläche kopiere,bleibt das Makro bei dieser Zeile stehen:
Sheets("Tagesbericht blanko").Copy After:=Sheets(Sheets.Count)
Lg Frank
Anzeige
AW: VBA Code enthält einen Fehler
02.04.2017 21:14:45
Frank
Nachtrag: Wäre es nicht einfacher,wenn ich sämtlichen Code,der zum Tabellenblatt " Tagesbericht blanko" gehört lösche und du mir eventuell den Code dafür aus deiner Sicht schreibst? Der Code fürs Tabellenblatt "Blanko" arbeitet schon seit Jahren einwandfrei
Der Absturz ist ja erst seit heute bzw seit dem neuen zusätzlichen Code
AW: VBA Code enthält einen Fehler
02.04.2017 22:07:24
firmus
Hi Frank,
ich habe das Rad auch nicht neu erfunden, aber das Makro etwas gesprächiger gemacht.
Einfach 1:1 ersetzen.
'benennt Tabellenblatt nach Zelle B1
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim s As String
If Target.Address = "$B$1" Then
s = Range("B1").Value
If IsDate(Target.Value) Then
s = Format(s, "dd mmmm yyyy")
MsgBox "MSG01: neuer name: '" & s & "'"
If UCase(ActiveSheet.Name) = UCase("Tagesbericht blanko") Then
'  s = "test/a"    'enthält absichtlich einen Fehler, um Fehlerroutine zu testen.
MsgBox "MSG02: neuer name: '" & s & "'"
On Error Resume Next
ActiveSheet.Name = s
If Err.Number  0 Then
MsgBox "MSG03: Fehler '" & Err.Number & " " & Err.Description & " aufgetreten."
On Error GoTo 0
Exit Sub
End If
End If
Else
MsgBox "MSG04: Zelle B1 enthält kein Datum, Wert='" & s & "'."
Exit Sub
End If
End If
End Sub
Gruß
Firmus
AW: VBA Code enthält einen Fehler
03.04.2017 00:03:10
Frank
Hi Firmus,
das mit deinem Code werd ich morgen ausprobieren,wobei ich glaube,das es gar nicht an dem Umbennen liegt,sondern am kopieren.
Wie schon erwähnt habe ich eine zweite Variante erstellt wo ich das Tabellenblatt "Tagesbericht" (hier verkürzter Name) per eigener Schaltfläche mit dazugehörigem Code kopiere.Dann hab ich den VBA Editor im zweiten Monitor geöffnet,alle Module nebeneinander gesetzt und den Tagesbericht kopiert.Der Code bleibt im Modul 1 bei folgender Zeile stehen : Sheets("Tagesbericht").Copy After:=Sheets(Sheets.Count)
Hier mal der Link zur anderen Variante: https://www.herber.de/bbs/user/112574.xls
Vielleicht kannst du damit mehr anfangen als ich.Der Fehler kann nur in dem Code für das Tabellenblatt "Tagesbericht" stecken,alles andere läuft schon einige Jahre
AW: VBA Code enthält einen Fehler
03.04.2017 09:03:57
firmus
Hi Frank,
das erneut hochgeladene file enthält keinen zusätzlichen Button.
Weitere Idee (zum Stochern).
Im Blatt "H" ist in Zelle A20 die benutzerdefinierte Formel "Ostern" hinterlegt.
Im Debug-Mode kann man sehen, dass Sie bei jedem Ausführen durchlaufen wird.
Setze diese Formel auf Kommentar in der Zelle, und versuche es nochmals.
Aber wie geschrieben: stochern.
Gruß
Firmus
AW: VBA Code enthält einen Fehler
03.04.2017 09:34:06
Frank
Moin Firmus,
irgendwas stimmt doch hier nicht.Hab mir die letzte Mappe mal von hier runter geladen und da sehe ich im Tabellenblatt "Tagesbericht" sehr wohl den neuen Button für den Tag.
Werde gleich mal Excel aufm Läppi installieren und dort mal schauen was passiert.
Lg Frank
AW: VBA Code enthält einen Fehler
03.04.2017 12:11:12
firmus
Hi Frank,
sorry, mein Fehler. Ich war gedanklich stark auf "Neuer Monat" fixiert.
Diese neue Variante (Neuer Tag) läuft auf xls2013 fehlerfrei.
Gruß
Firmus
AW: VBA Code enthält einen Fehler
03.04.2017 20:09:00
Frank
Hi Firmus,
ich gebs auf. Hab jetzt Excel aufm Läppi installiert und es passiert genau dasselbe,Excel stürzt ab. Das was ich neu herausgefunden habe ist folgendes:
Wenn ich zuerst per Makro das Tabellenblatt "Monat" bzw "Blanko" kopiere und dann versuche,das Tabellenblatt "Tag" bzw. "Tagesbericht Blanko" manuell zu kopieren,dann stürzt Excel auch ab. Makro bleibt bei dieser Zeile stehen:
Sheets("Tag").Copy After:=Sheets(Worksheets.Count)
mal ein Bild mit allen Codes
Userbild
Lg Frank
AW: VBA Code enthält einen Fehler
04.04.2017 16:30:33
firmus
Hi Frank,
"Manuelles Kopieren lässt Excel ebenfalls abstürzen", da ist vermutlich mehr kaputt in dieser xlsfile.
ich würde jetzt an den Basics anfangen.
1. komplett neues xlsfile.
2. ein Blatt kopieren (mit ein paar dummy Daten)
3. Excel-Absturz?
JA: dein EXCEL scheint defekt zu sein. Kann hier ohne Detailkenntnis keine weiteren Tipp geben.
NEIN: Deine bestehende xlsfile ist defekt, dann neu anfangen.
4. Neuanfangen:
a) Blätter H + Blanko + Tag...Blanko in neuer xlsfile anlegen.
b) Aus der defekten File diese drei Blätter einzeln kopieren,
c) Speichern und dann noch ein manuelles Kopieren durchführen.
Excel-Absturz?
JA: Kopiervorgänge aufsplitten nach Daten + Formeln + Formaten
Nein: Erst einmal gewonnen,
d) Makros schrittweise einfügen und bei jedem Schritt testen.
Ist eine Möglichkeit, wahrscheinlich dass es dann klappt, aber keine Garantie.
Ich werde hier aussteigen, wünscht Dir noch viel Erfolg.
Kurzer Update über das endgültige Ergebnis wäre nett.
Gruß
Firmus
AW: VBA Code enthält einen Fehler
07.04.2017 21:39:51
Frank
Hi Firmus,
hier mal das neueste Update falls noch Interesse besteht. Fehler nicht gefunden bzw behoben trotz kompletten Neuaufbau
https://www.herber.de/bbs/user/112725.xls
Jedoch drei neue Phänomene entdeckt.
1. In obiger Datei lässt sich das Tabellenblatt "Tagesbericht" problemlos kopieren,solange schon eine Kopie vom Tabellenblatt "Monat" existiert,ansonsten Absturz mit gleicher Fehlermeldung wie im Bild.
2. Beim kopieren von "Monat" und auswahl des Monats kommt ein Hinweis über irgendwelche Zirkelbezüge obwohl die Formel ja identisch ist.
3. In Zelle M23 bzw O23 rechnet Excel irgendwie nicht richtig mit dieser Zeitangabe,keine Ahnung warum
Lg Frank

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige