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

Zellen / Spalten auf Wertänderung prüfen

Zellen / Spalten auf Wertänderung prüfen
19.03.2009 10:03:07
Lars
Hallo zusammen
Ich möcgte z.B. eine Änderung einer Zelle (F5) überwachen und bei Änderung dann einen Wert in eine weitere Zelle (C5) schreiben. Dazu habe ich mir folgendes Makro erstellt:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$F$5" Then
Range("C5").Value = "changed"
End If
End Sub


Das funktioniert soweit auch. Nun habe ich aber in meinem File ca. 500 Zeilen und ca. 15 Spalten die ich überwachen sollte. Was ich vermeiden möchte ist, dass ich für jede Zelle ein "IF" Statement schreiben muss.
Nun meine Frage:
A; Ist es möglich, in der Target.Adress einen Bereich, nicht nur eine Zelle anzugeben? "$F$5:$H$5" geht irgendwie nicht.
B; Wie könnt man das Makro für alle Zeilen nutzen, also z.B. wird in der Zeile 5 im Bereich F bis H geändert, soll die Änderung in C5 eingetragen werden, wird in der Zeile 10 im Bereich F bis H geändert, soll die Änderung in C10 eingetragen werden?
Besten Dank für eure Hilfe
Lars

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen / Spalten auf Wertänderung prüfen
19.03.2009 11:00:19
dan
Hallo,
ja man kann z.B. Veraenderungen in der Spalte 'A' abfangen:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
' If Target.Address = "$F$5" Then
If (Target.Column = 1) Then
Target.Offset(0, 1).Value = "changed"
End If
End Sub


Gruss dan, cz.

AW: Zellen / Spalten auf Wertänderung prüfen
19.03.2009 13:06:37
Lars
Hallo dan
besten Dank! Geht soweit, aber da ist noch eine Frage aufgekommen.
Ist es möglich, dass ich immer in die Spalte C (fest) schreibe, die Reihe ist abhängig von der Selektion, also geändert wird in A5 -- nun wird in C5 "changed" eingetragen, oder geändert wird in H11 -- nun wird ind C11 "changed" geschriben.
Wenn ich die Offsets verstelle (Target.Offset(0, 1).Value = "changed") geht das auch soweit (solange nur eine Zelle bearbeitet wird), nur wenn ich dann mehrere Zeilen markiere und diese lösche schreibt es mir wie wild "changed" auf den sheet.
Merci
lars
Anzeige
AW: Zellen / Spalten auf Wertänderung prüfen
19.03.2009 14:02:50
dan
Hallo Lars,
ich verstehe Dich jetzt nicht ganz. Versuch es bitte nochmals beschreiben. Wie soll es genau funkzionieren?
Im Prinzip benutzt man den 'Target' parameter als eine Zelle, wo man den Wert geandert hat. Und offset Methode veschiebt dei Zell-Koordinaten damit man auf eine andere Zelle zugreifen kann.
Also man kann testen, wo die Eingabe statgefunden hat (Target) und man kann dann etscheiden, was passiert.
dan, cz.
AW: Zellen / Spalten auf Wertänderung prüfen
19.03.2009 14:26:56
Lars
Hallo dan
also ich vesuch es nochmals.
Zur Anschaung habe ich dir noch das File in den Upload gelegt.
https://www.herber.de/bbs/user/60468.xls
Also ich möchte Änderungen in allen Zellen der Spalten A,B, D,E,F ab der Reihe 5 überwachen, bis zur letzten Reihe (65536). Hat eine Änderung stattgefunden, möchte ich, dass in der Spalte C der aktuellen Reihe der String "changed" geschrieben wird. Beispiel, ich ändere in der Zelle A5, dann schreibt es mir in C5 "changed", ich ändere in E7, dann schreibt es mir in C7 "changed".
Das möchte ich dann verwenden um weitere Aktionen in Abhängigkeit der Spalte C auszulösen.
Das Makro unten macht eigentlich genau das was was ich will, nur, dass es mir wenn ich Zellenbereiche markiere (die auserhalb dieser Bereiche liegen) mir überall mit dem Offset die "changed" Strings einträgt.

Private Sub Worksheet_Change(ByVal Target As Range)
'Spalte A
If (Target.Column = 1) Then
Target.Offset(0, 2).Value = "changed"
'Spalte B
ElseIf (Target.Column = 2) Then
Target.Offset(0, 1).Value = "changed"
'Spalte D
ElseIf (Target.Column = 4) Then
Target.Offset(0, -1).Value = "changed"
'Spalte E
ElseIf (Target.Column = 5) Then
Target.Offset(0, -2).Value = "changed"
'Spalte F
ElseIf (Target.Column = 6) Then
Target.Offset(0, -3).Value = "changed"
End If
End Sub


Besten Dank für Deine Mühe
Gruss
lars

Anzeige
AW: Zellen / Spalten auf Wertänderung prüfen
19.03.2009 15:13:13
Gerd
Hallo Lars!

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Union(Columns("A:B"), Columns("D:F"), Rows("5:65536"))) Is Nothing  _
Then
Cells(Target.Row, "C") = "Changed"
End If
Application.EnableEvents = True
End Sub


'wenn mal nichts geht
Sub Event_Repartur()
Application.EnableEvents = True
End Sub


Gruß Gerd

AW: Zellen / Spalten auf Wertänderung prüfen
19.03.2009 15:25:12
dan
Ok, verstanden :-). Probiere es mit diesem Code aus:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'    If Target.Address = "$F$5" Then
'       Range("C5").Value = "changed"
' ab der Reihe 5
If (Target.Rows(1).Row 



Private Sub WriteChanged(ByRef targetedColumn As Range, ByVal columnOffset As Integer)
Dim c As Range
Application.EnableEvents = False
For Each c In targetedColumn.Cells
c.Offset(0, columnOffset).Value = "changed"
Next c
Application.EnableEvents = True
End Sub


Anzeige
AW: Zellen / Spalten auf Wertänderung prüfen
20.03.2009 10:35:52
Lars
Hallo
Danke für beide Versionen, gehen beide :-)
Genua das was ich wollte!
Merci vielmals
Lars
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige