Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1156to1160
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

Worksheet_Change......

Worksheet_Change......
Putenbrust
Hi,
ich möchte für den Bereich B2:G8 sämtliche Aktivitäten des Anwenders überprüfen. Also genau wie das Worksheet_Change-Ereignis in einem Tabellenblatt. Aber eben nur für den genannten Bereich.
Auch zum Beispiel das Löschen oder kopieren von mehreren Zellen gleichzeitig.
Nur das alleinige Auswählen von Zellen, soll nicht überprüft werden. Nur wenn aktiv geschrieben oder gelöscht....... wird. Also, dass Change-Ereignis.
Wird eine Aktivität festgestellt, hätte ich gerne eine msgBox mit "verändert".
Kann mir jemand helfen
Vielen Dank
Thomas

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Worksheet_Change......
12.05.2010 08:14:56
Hajo_Zi
Hallo Thomas,
Option Explicit             ' Variablendefinition erforderlich
Private Sub Worksheet_Change(ByVal Target As Range)
'* H. Ziplies                                     *
'* 12.05.11                                       *
'* erstellt von HajoZiplies@web.de                *
'* http://Hajo-Excel.de/
Dim RaBereich As Range, RaZelle As Range
' Bereich der Wirksamkeit
Set RaBereich = Range("L22:M39, O21:O26")
' noch mehr Bereiche
'Set RaBereich = Union(Range("C11:AG11 , C13:AG13, C15:AG15 , C17:AG17 , C19:AG19 ,  C21: _
AG21 , C27:AE27 , C29:AE29, C31:AE31, C33:AE33"), _
'    Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49 ,C51:AG51 , C53: _
AG53 , C59:AF59 , C61:AF61 , C63:AF63 , C65:AF65"), _
'    Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81 , C83:AG83 ,  _
C85:AG85 ,C91:AF91 , C93:AF93 , C95:AF95 , C97:AF97"), _
'    Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111 , C113:AG113 , C115: _
AG115 , C117:AG117 , C123:AG123 , C125:AG125"), _
'    Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139 , C141:AF141 ,  _
C143:AF143 , C145:AF145 , C147:AF147 , C149:AF149"), _
'    Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163 , C165:AG165 ,  _
C171:AF171 , C173:AF173 , C175:AF175 , C177:AF177 "), _
'    Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191 , C193:AG193 ,  _
C195:AG195 , C197:AG197"))
' Zelle die in dem Bereich liegen auf die Varible schreiben
' damit werden nur noch die Zellen bearbeitet die im vorgegeben Bereich liegen
' jede Zelladresse ist einzeln angegeben
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
'ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In RaBereich
MsgBox "Zelle " & RaZelle.Address & " verändert"
Next RaZelle
End If
Set RaBereich = Nothing
End Sub

Anzeige
AW: Worksheet_Change......
12.05.2010 08:29:16
Putenbrust
Vielen Dank Hajo,
funktioniert soweit.
NUR: Was muss man ändern, wenn ich zum Beispiel 2 Zellen nehme und diese innerhalb des Bereichs kopiere, damit nicht 2mal die Box kommt. Obwohl 2 Zellen verändert wurden, möchte diese Aktivität des Anwenders mit einer Meldung abtun. Denn werden beispielsweise 10 oder mehr Zellen gleichzeitig verändert, bekomme ich 10mal oder öfters die Box angezeigt.
Eine Idee ?
Vielen Dank
Grüsse
Thomas
AW: Worksheet_Change......
12.05.2010 08:31:06
Hajo_Zi
Hallo Thomas,
dann kommt aber nur ein Hinweis, egal welche Zellen. Der Hinweis kommt nur bei der ersten.
MsgBox "Zelle " & RaZelle.Address & " verändert
exit For
Gruß Hajo
Anzeige
AW: Worksheet_Change......
12.05.2010 08:34:46
Putenbrust
Volltreffer, dass isses.
Ich brauche gar nicht die genauen Adressen, der veränderten Zellen.
Einfach nur einmal ein Hinweis, dass etwas verändert wurde.
Vielen Dank
Grüsse
Thomas
AW: Worksheet_Change......
12.05.2010 09:05:35
Hajo_Zi
Hallo Thomas,
man könnte es noch einfacher machen.
Option Explicit             ' Variablendefinition erforderlich
Private Sub Worksheet_Change(ByVal Target As Range)
'* H. Ziplies                                     *
'* 12.05.11                                       *
'* erstellt von HajoZiplies@web.de                *
'* http://Hajo-Excel.de/
Dim RaBereich As Range, RaZelle As Range
' Bereich der Wirksamkeit
Set RaBereich = Range("L22:M39, O21:O26")
' Zelle die in dem Bereich liegen auf die Varible schreiben
' damit werden nur noch die Zellen bearbeitet die im vorgegeben Bereich liegen
' jede Zelladresse ist einzeln angegeben
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
MsgBox "es wurde eine Zelle im Bereich geändert"
End If
Set RaBereich = Nothing
End Sub
Gruß Hajo
Anzeige
AW: Worksheet_Change......
12.05.2010 18:45:29
Putenbrust
Nochmals Vielen Dank Hajo.
Hast mir sehr geholfen.
Grüsse
Thomas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige