Zellwert kopieren bei Änderung VBA
#11
Hi

Zitat:@Elex, dein Code funktioniert bei mir leider nicht, Laufzeitfehler 9; Index außerhalb des gültigen Bereichs.
dann passen deine Registernamen wahrseinlich nicht.

[attachment=17578]
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • diving_excel
Top
#12
Danke, das wars! Hab die Tabellen Nummer anstatt den Tabellen Namen verwendet, mit dem Namen funktioniert das super!
Top
#13
Sorry dass ich das Thema nochmal aufmachen muss, aber ist es auch möglich zwei Zellen gleichzeitig zu überwachen? Also neben D7 noch F7? Falls sich einer der beiden Werte ändert soll dann fortlaufend in Spalte A und Spalte D kopiert werden. Also wie bisher nur erweitert um eine weitere Überwachte Zelle. 
Bekomme das zwar ansatzweise hin, aber nicht wirklich zufriedenstellend, bzw. bis jetzt hab ich das ganze per Formel überwacht, also wenn dein VBA Code einen neuen Wert erzeugt hat, wird der Wert aus F7 daneben kopiert. 

Problem hierbei ist das ich immer nur den aktuellsten Wert bekomme und nicht wie D7 eine Art Historie / Log Liste.
Top
#14
Hi @ diving_excel,
 
für eine Frage brauchst du dich nicht entschuldigen.
Leider ist die Beschreibung für mich nicht eindeutig.
 
Wenn sich ein Wert ändert (D7 oder F7), sollen trotzdem beide in Tabelle12 Spalte A und D Protokolliert werden.
Oder jeweils nur der geänderte Wert und die Listen in A und D können unterschiedlich lang werden.
Top
#15
Genau, wenn sich ein Wert ändert (D7 oder F7) dann sollen trotzdem beide in Tabelle12 Spalte A und D protokolliert werden.
Top
#16
OK. 
Code:
Private Sub Worksheet_Calculate()
Set n = Sheets("Tabelle12").Range("A" & Sheets("Tabelle12").Cells(Rows.Count, 1).End(xlUp).Row)
If Range("D7").Value <> n.Value Or Range("F7").Value <> n.Offset(0, 3).Value Then
 n.Offset(1) = Range("D7").Value
 n.Offset(1, 3) = Range("F7").Value
End If
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • diving_excel
Top
#17
Hab deinen Code etwas angepasst und mit dem Datum ergänzt. Außerdem noch EnableEvents eingebaut, da sich der Code sonst wieder in einer Schleife festgefahren hat. Jetzt funktioniert alles, vielen Dank, wieder was neues gelernt  :19:

Code:
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
Set n = Sheets("Tabelle12").Range("A" & Sheets("Tabelle12").Cells(Rows.Count, 1).End(xlUp).Row)
If Range("D7").Value <> n.Value Or Range("F7").Value <> n.Offset(0, 2).Value Then
n.Offset(1) = Range("D7").Value
n.Offset(1, 1) = Range("F7").Value
n.Offset(1, 2) = Date
End If
Application.EnableEvents = True
End Sub
Top
#18
Moin!
Nur ein ergänzender Warnhinweis:
Wenn Du in einem Ereignis-Makro die Events abschaltest, solltest Du immer, ständig und überhaupt eine Fehler-Routine einbauen, die sicherstellt, dass die Events auch bei Abflug des Programms wieder auf true gestellt werden!

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • diving_excel
Top
#19
Hi

Private Sub Worksheet_Calculate()
Application.EnableEvents = False
Set n = Sheets("Tabelle12").Range("A" & Sheets("Tabelle12").Cells(Rows.Count, 1).End(xlUp).Row)
If Range("D7").Value <> n.Value Or Range("F7").Value <> n.Offset(0, 2).Value Then  'die rote Zahl in der Zeile
n.Offset(1) = Range("D7").Value
n.Offset(1, 1) = Range("F7").Value   'und in der sollten gleich sein
n.Offset(1, 2) = Date
End If
Application.EnableEvents = True
End Sub

Und es sollte auch ohne Application.EnableEvents gehen. Bei mir jedenfalls geht das.

Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • diving_excel
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste