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

Fehler 1004 - Übertrag von Namen

Fehler 1004 - Übertrag von Namen
15.09.2022 14:41:43
Namen
Hallo,
ich bekomme eine Fehlermeldung Laufzeitfehler 1004. Es scheint sich auf eine Eintragung des Benutzernamens in eine Zelle zu handeln.
Weshalb das jetzt so ist kann ich nicht sagen. War gestern noch soweit alles ok.
Hier mal der Code, kann jemand feststellen was da falsch sein könnte?

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Code für das Automatische Anzeigen des Speicherdatums und von der Person die gespeichert hat (Anmeldung am PC)
Sheets("Projektübersicht FMSW").Select
ActiveSheet.Unprotect Password:="XYZ"
Range("I5").Value = Application.UserName
Range("I4").Value = Strings.Format(Now, "hh:mm") & " Uhr - " & Strings.Format(Now, "YYYY-MM-DD")
ActiveSheet.Protect Password:="XYZ", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
ActiveWorkbook.Save
End Sub

Private Sub workbook_activate()
'Automatisches Datum eintragen
ActiveSheet.Unprotect Password:="XYZ"
Sheets("Projektübersicht FMSW").Select
Range("I3") = Format(Now, "yyyy-mm-dd")
ActiveSheet.Protect Password:="XYZ", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
End Sub

Die beiden Codes stehen in: Dieser Arbeitsmappe
Verbunden sind diese mit einem Schaltbutton zum speichern und schließen des Dokumentes.
Wenn dabei dann das Dokument geschlossen wird, soll in Zelle I5 der Benutzername und in I4 das Datum geschrieben werden.
Jetzt wird mir die Zeile Rabge ("I5")... gelb markiert und als Fehler angezeigt.
Was habe ich hier falsch gemacht?

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

Betreff
Datum
Anwender
Anzeige
AW: Fehler 1004 - Übertrag von Namen
15.09.2022 14:50:35
Namen
Ok, ich hab vermutlich einen Ansatz gefunden, verstehe jedoch nicht weshalb das so ist.
Unter Modul 6 wurde automatisch der Code geschrieben der auf einen Button funktioniert.
Hier wird die Exceldatei gespeichert.
Da ich wollte das dann auch automatisch das Dokument schließt, habe ich noch den Befehl schließen dort eingefügt:
ActiveWorkbook.Close
Seit dieser Änderung bekomme ich die Fehlermeldung das beim schließen irgendwas mit Zelle I5 ... siehe Frage oben.
Darf man nicht an zwei orten etwas stehen haben was mit dem schließen des Dokumentes zu tun hat?
Vielleicht kann mir kurz jemand den Zusammenhang der Orte der Makros erklären. also weslhalb einige Makros automatisch in "Modul1 bis 9" geschrieben werden, andere in die "Tabelle1" selbst und andere in die "Arbeitsmappe"
Danke
Anzeige
AW: Fehler 1004 - Übertrag von Namen
15.09.2022 15:38:58
Namen
Hi
du solltest dir angewöhnen, ohne Select und Activate zu arbeiten, das ist kürzer und sicherer und der Bildschirm flackert nicht.
im zweiten Makro ist auf jeden fall die Reihenfolge falsch, weil du zuerst den Blattschutz aufhebst und danach erst das Blatt selektierst, dh du weißt gar nicht, auf welchem Blatt du den Blattschutz aufhebst und machst das u.U. auf dem falschen Blatt.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Code für das Automatische Anzeigen des Speicherdatums und von der Person die gespeichert hat (Anmeldung am PC)
Sheets("Projektübersicht FMSW").Unprotect Password:="XYZ"
Sheets("Projektübersicht FMSW").Range("I5").Value = Application.UserName
Sheets("Projektübersicht FMSW").Range("I4").Value = Strings.Format(Now, "hh:mm") & " Uhr - " & Strings.Format(Now, "YYYY-MM-DD")
Sheets("Projektübersicht FMSW").Protect Password:="XYZ", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
ActiveWorkbook.Save
End Sub

Private Sub workbook_activate()
'Automatisches Datum eintragen
Sheets("Projektübersicht FMSW").Unprotect Password:="XYZ"
Sheets("Projektübersicht FMSW").Range("I3") = Format(Now, "yyyy-mm-dd")
Sheets("Projektübersicht FMSW").Protect Password:="XYZ", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
End Sub
wenn man hier das selbe Blatt öfters verwendet, kann man sich mit der WITH-Klammer behelfen, hierbei wird das Blatt (oder Zellbereich oder anders Objekt) mit WITH definiert, welches immer dann angewendet wird, wenn ein Ausdruck mit dem Punkt beginnt:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Code für das Automatische Anzeigen des Speicherdatums und von der Person die gespeichert hat (Anmeldung am PC)
With Sheets("Projektübersicht FMSW")
.Unprotect Password:="XYZ"
.Range("I5").Value = Application.UserName
.Range("I4").Value = Strings.Format(Now, "hh:mm") & " Uhr - " & Strings.Format(Now, "YYYY-MM-DD")
.Protect Password:="XYZ", DrawingObjects:=True, Contents:=True, Scenarios:=True , AllowFiltering:=True
End With
ActiveWorkbook.Save
End Sub
Gruß Daniel
Anzeige
AW: Fehler 1004 - Übertrag von Namen
15.09.2022 16:04:44
Namen
Hallo Daniel,
vielen Dank, das Schaut bedeutend aufgeräumter aus und man hat mehr Übersicht.
Eine Zusammenfassung beider Codes macht keinen Sinn, da der eine vor dem schließen der Datei und der andere beim Öffnen geschieht, richtig?
Speichere ich die Codes im jeweiligen Scheets ab oder in dem Ordner "Diese Arbeitsmappe"? Worin besteht hier der Unterschied?
Kannst du mir noch etwas dazu sagen wo man die Makros hin speichert?
In das jeweilige Scheets selbst oder in die Arbeitsmappe?
Und wozu dienen die Module links in der Ordnerstruktur vom VBA Projekt.
Des weiteren finde ich keine Lösung das ich das Dokument über den Button speichern und schließen kann.
Die Speicherung funktioniert prima!
Erst bei hinzugabe des Befehls das Dokument zu schließen bekomme ich immer die besagte Fehlermeldung :-(

Sub xxxxxxxxx()
' Speichern Unter &
' Alle Filter zurücksetzen &
' Speichern mit Datum & Sachbearbeiter
' Schließen der aktiven Datei
' Makro
ChDir "Z:\Sg_f\Alle\Projekte Schiffbau"
ActiveWorkbook.SaveAs Filename:= _
"Z:\Sg_f\Alle\Projekte Schiffbau\" & Range("I3") & ("_") & Range("I2") & "_Projektübersicht-Wasserfahrzeuge SG Schiffbau.xlsm" _
, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub

Ben Befehl die Filter zu zurückzusetzen wollte ich noch dazu machen, hier bekomme ich leider immer Fehler wenn es keinen gesetzten Filter gibt.
Da bräuchte ich dann irgendwas von wegen Zurücksetzen falls es gesetzte gibt andernfalls nichts tun.

Anzeige
AW: Fehler 1004 - Übertrag von Namen
15.09.2022 16:14:51
Namen
Hi
Workbooks_Open läuft beim Öffnen der Mappe.
Workbook_Activate läuft, wenn du mehrere Mappen hast und wischen den Mappen hin- und herwechselst.
Ob Workbook_Activate auch beim Öffnen läuft, weiß ich jetzt nicht auswendig, das müsstest du mal selber testen. (ich baue dazu gerne ein Beep ein, dann hört man, wenn das Makro ausgeführt wird)
in DieseArbeitsmappe kommen die EventMakros, die zur Arbeitsmappe gehören (Open, Close)
in die Tabellenblattmodule gehören die Eventmakros, die zu den jeweiligen Tabellenblättern gehören bzw nur bei einzelen Blättern ausgeführt werden sollen. (Selection_Change, Change), oder die Makros, die über die ActiveX-Elemente (buttons) auf dem Blatt ausgelöst werden
in allgemeine Module (Modul1, muss erst erst eingefügt werden), dann alle Makros, die allgemein und Blattunabhängig gelten und nicht automatsich bei bestimmen Aktionen ausgelöst werden (also alles, was kein Event-Makro ist)
Wenn du in "DieseArbeitsmappe" oder in einem Tabellenblattmodul bist, dann schau dir auch mal die beiden Comboboxen über dem Codefenster an. in der rechten bekommst du die möglichen Eventmarkos angezeigt.
Gruß Daniel
Anzeige
AW: Fehler 1004 - Übertrag von Namen
15.09.2022 18:55:14
Namen
Danke Daniel!
Bezüglich meines Fehlers, wenn ich nach dem Speichern noch den Befehl "Dokument schließen" ausführe, das er dann meckert und mir den Fehler mit Verweiß auf Range ("I5") gibt wo die Abfrage nach dem Benutzername vor dem schließen kommt, hättest du da ne Idee?
Derzeitiger Code unter "Dieser Arbeitsmappe":

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Code für das Automatische Anzeigen des Speicherdatums und von der Person die gespeichert hat (Anmeldung am PC)vor dem schließen des Dokumentes
With Sheets("Projektübersicht FMSW")
.Unprotect Password:="XYZ"
.Range("I5").Value = Application.UserName
.Range("I4").Value = Strings.Format(Now, "hh:mm") & " Uhr - " & Strings.Format(Now, "YYYY-MM-DD")
.Protect Password:="XYZ", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
End With
ActiveWorkbook.Save
End Sub

Private Sub workbook_activate()
'Automatisches Datum eintragen beim Öffnen der Datei
With Sheets("Projektübersicht FMSW")
.Unprotect Password:="XYZ"
.Range("I3") = Format(Now, "yyyy-mm-dd")
.Range("I1").Value = Application.UserName
.Protect Password:="XYZ", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
End With
ActiveWorkbook.Save
End Sub
Sub xxxxxxxxx()
'
' Speichern Unter &
' Alle Filter zurücksetzen &
' Speichern mit Datum & Sachbearbeiter
' Schließen der aktiven Datei
' Makro
'
'
ChDir "Z:\Sg_f\Alle\Projekte Schiffbau"
ActiveWorkbook.SaveAs Filename:= _
"Z:\Sg_f\Alle\Projekte Schiffbau\" & Range("I3") & ("_") & Range("I2") & "_Projektübersicht-Wasserfahrzeuge SG Schiffbau.xlsm" _
, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub

Sobald ich hinter das Abspeichern noch das Schließen setze, funktioniert es nicht mehr.?
Was bezwecke ich mit den Makros...
Also in dem Scheet soll stehen wer das Dokument gespeichert hat und wann.
Des weiteren wird das Dokument durch einen Button mit vordefiniertem Namen und Pfad gespeichert. Es soll aber ebenfalls direkt geschlossen werden.
Ob das richtig ist, das ich die Infos vom Benutzer und Datum vor dem Schließen ins Dokument eintrage und nicht erst vor dem Speichern, da bin ich mir nicht sicher. Es funktioniert zumindest mal bis zum schließen ...
Anzeige
AW: Fehler 1004 - Übertrag von Namen
16.09.2022 14:55:53
Namen
Hallo
ich sehe das zwei Makros fast identisch sind. Einmal wird UserName in "I5" und einmal in "I1" gespeichert.
Der einzige Unterschied ist, das Format(Now) einmal davor, und einmal dahinter steht!! - Kann das was ausmachen?
Einfach mal probieren was passiert wenn man beide gleich macht ....
mfg Piet
AW: Fehler 1004 - Übertrag von Namen
17.09.2022 11:20:38
Namen
Also die eine Abfrage des Benutzers findet vor dem schließen und speichern statt. Somit sieht man wer das Dokument zuletzt gespeichert hat.
Der andere User wird nach dem öffnen abgefragt. Das ist dann der aktuelle Nutzer. Den Benötige ich, um den Benutzer in den Speichernamen schreiben zu lassen.
Den beim Speichern muss das Speicherdatum und die Person die speichert enthalten sein.
Das funktioniert auch soweit ganz gut.
Wenn ich jetzt allerdings noch den Befehl das das Dokument schließen soll, hinter das speichern hänge, dann meckert er rum das bei den Benutzernamen etwas nicht geht.
Das Speichern und schließen hätte ich aber schon ganz gerne zusammen kombiniert.
Anzeige
AW: Fehler 1004 - Übertrag von Namen
19.09.2022 12:27:40
Namen
Hallo
kannst du die Abfrage des Benutzer Namens nich nach Workbook_Open verschieben? Und dann den User-Namen sofort speichern?
Ich rate nur um den Code zu verbessern, aber manchmal hat man damit Erfolg ....
mfg Piet

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige