Hallo,
ich möchte folgende Probleme lösen.
Da ich annehme, dass die Lösung sehr ähnlich aussieht, die Frage in einem Thread:
a) Im Blatt „Arbeitsdaten“ arbeite ich. Anhand dessen, was dort steht, wird in „Berechnungen“ automatisch (übliche Zellenformeln) Zeugs berechnet. Jetzt gibt es ein drittes Worksheet „Druckansicht“, welches sich Daten aus beiden herausholt.
Ich habe ein Makro „Druckansicht aktualisieren“, welches das tut, was ich will. Nur muss ich es derzeit per Knopfdruck ausführen.
Wie sorge ich dafür, dass die Druckansicht automatisch erstellt wird, wenn ich das entsprechende Worksheet auswähle?
b) Im Blatt „Arbeitsdaten“ kann man derzeit rumfuchteln, wie man möchte. Ich wünsche allerdings eine Chronologie.
Derzeitige Lösung: Arbeitsblatt „Chronologie“, in die jeder Eintrag aus „Arbeitsdaten“ mit Makro übernommen wird, der noch nicht in der Chronologie verzeichnet war.
Das Makro wird von Hand ausgeführt, also gibt es keine Garantie, dass auch alle Änderungen drin sind.
Wie kann ich beim Verändern bestimmer Zellen automatisch einen Eintrag in die „Chronologie“ machen?
Danke und Gruss,
Michael
Grüezi Michael
a) Im Blatt „Arbeitsdaten“ arbeite ich. Anhand dessen, was
dort steht, wird in „Berechnungen“ automatisch (übliche
Zellenformeln) Zeugs berechnet. Jetzt gibt es ein drittes
Worksheet „Druckansicht“, welches sich Daten aus beiden
herausholt.
Ich habe ein Makro „Druckansicht aktualisieren“, welches das
tut, was ich will. Nur muss ich es derzeit per Knopfdruck
ausführen.
Wie sorge ich dafür, dass die Druckansicht automatisch
erstellt wird, wenn ich das entsprechende Worksheet auswähle?
Es gibt dazu das Worksheet_Activate()-Ereignis im Tabellenblatt ‚Druckansicht‘, das Du verwenden kannst.
b) Im Blatt „Arbeitsdaten“ kann man derzeit rumfuchteln, wie
man möchte. Ich wünsche allerdings eine Chronologie.
Derzeitige Lösung: Arbeitsblatt „Chronologie“, in die jeder
Eintrag aus „Arbeitsdaten“ mit Makro übernommen wird, der noch
nicht in der Chronologie verzeichnet war.
Das Makro wird von Hand ausgeführt, also gibt es keine
Garantie, dass auch alle Änderungen drin sind.
Wie kann ich beim Verändern bestimmer Zellen automatisch einen
Eintrag in die „Chronologie“ machen?
Hier kannst Du das Worksheet_Change()-Ereignis im Blatt ‚Arbeitsdaten‘ verwenden.
–
Mit freundlichen Grüssen
Thomas Ramel
hallödele,
Hier kannst Du das Worksheet_Change()-Ereignis im Blatt ‚Arbeitsdaten‘ verwenden.
möglicherweise steh’ ich zu sehr auf dem Schlauch, aber das hier gibt einen Fehler:
Private Sub Worksheet\_Change(ByVal Target As Range)
TC = Target.Column
TR = Target.Row
IM\_Last = Sheets("IM\_History").UsedRange.Rows.Count + 1
Worksheets("IM\_History").Range(Cells(TR, 1), Cells(TR, 15)).Value = "BLAH" '\* hier ist der Fehler
End Sub
Laufzeitfehler 1004: anwendungs- oder objektdefinierter Fehler
Jetzt ist „IM_History“ das Ziel-Worksheet, in das ich die Daten ablegen will, nicht jenes, in dem ich arbeite.
Die Zeile über der Fehlerhaften deutet darauf hin, dass die Existenz des Worksheets nicht das Problem ist… ;/
Bitte um weitere Hilfe,
Michael
Grüezi Michael
möglicherweise steh’ ich zu sehr auf dem Schlauch, aber das
hier gibt einen Fehler:
Private Sub Worksheet_Change(ByVal Target As Range)
TC = Target.Column
TR = Target.Row
IM_Last = Sheets(„IM_History“).UsedRange.Rows.Count + 1
Worksheets(„IM_History“).Range(Cells(TR, 1), Cells(TR,
15)).Value = „BLAH“ '* hier ist der Fehler
End Sub
Laufzeitfehler 1004: anwendungs- oder objektdefinierter Fehler
Jetzt ist „IM_History“ das Ziel-Worksheet, in das ich die
Daten ablegen will, nicht jenes, in dem ich arbeite.
Die Zeile über der Fehlerhaften deutet darauf hin, dass die
Existenz des Worksheets nicht das Problem ist… ;/
Du musst auch die Cells() innerhalb der Range()-Anweisungen korrekt referenzieren, sonst beziehen diese sich auf das aktuelle Tabellenblatt:
Private Sub Worksheet\_Change(ByVal Target As Range)
TC = Target.Column
TR = Target.Row
With Worksheets("IM\_History")
IM\_Last = .UsedRange.Rows.Count + 1
.Range(.Cells(TR, 1), .Cells(TR, 15)).Value = "BLAH"
End With
End Sub
–
Mit freundlichen Grüssen
Thomas Ramel
Private Sub Worksheet_Change(ByVal Target As Range)
TC = Target.Column
TR = Target.Row
IM_Last = Sheets(„IM_History“).UsedRange.Rows.Count + 1
Worksheets(„IM_History“).Range(Cells(TR, 1), Cells(TR,
15)).Value = „BLAH“ '* hier ist der Fehler
End Sub
Laufzeitfehler 1004: anwendungs- oder objektdefinierter Fehler
Jetzt ist „IM_History“ das Ziel-Worksheet, in das ich die
Daten ablegen will, nicht jenes, in dem ich arbeite.
Die Zeile über der Fehlerhaften deutet darauf hin, dass die
Existenz des Worksheets nicht das Problem ist… ;/
Hi Michael,
ich habe das so verstanden, in das Blatt „IM_History“ soll „unten“ jeweils die Änderung im bearbeiteten Blatt "angehängt werden.
Dazu dient ja wohl die Variable „IM_Last“, nur, die wird danach nicht mehr benutzt!?
Meinst du das vielleicht so:
(ungetestet)
Private Sub Worksheet\_Change(ByVal Target As Range)
Dim IM\_Last
IM\_Last = Sheets("IM\_History").UsedRange.Rows.Count + 1
activesheet.rows(target.row).copy destination:=Worksheets("IM\_History").cells(IM\_Last,1)
End Sub
Gruß
Reinhard