z.B. Anzahl2(AN11:AP200) und nutze das Calculate-Ereignis.
Bert
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim a As Long
Dim b As Long
b = 40
a = 11
If Application.MoveAfterReturnDirection = xlToRight Then
b = b + 1
ElseIf Application.MoveAfterReturnDirection = xlUp Then
a = a - 1
ElseIf Application.MoveAfterReturnDirection = xlToLeft Then
b = b - 1
ElseIf Application.MoveAfterReturnDirection = xlDown Then
a = a + 1
End If
If Target.Row >= a And Target.Row <= (a + 190) And Target.Column >= b And Target.Column <= (b + 3) Then
MsgBox "Code hierhin!"
End If
End Sub
hallo horst
wenn es dir nur darum geht zu erfahren ob in dem bereich irgendwas geändert wurde,
versuchs mal so:
Option Explicit
Dim Total_Focus As Range
Private Sub Worksheet_Calculate()
On Error Resume Next
If Total_Focus.Value = Range("an11:ap200").Value Then MsgBox "Zelle(n) im Bereich geändert. "
Set Total_Focus = Range("an11:ap200")
End Sub
ransi
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim a As Long
Dim b As Long
b = 40
a = 11
If Application.MoveAfterReturnDirection = xlToRight Then
b = b + 1
ElseIf Application.MoveAfterReturnDirection = xlUp Then
a = a - 1
ElseIf Application.MoveAfterReturnDirection = xlToLeft Then
b = b - 1
ElseIf Application.MoveAfterReturnDirection = xlDown Then
a = a + 1
End If
If Target.Row >= a And Target.Row <= (a + 190) And Target.Column >= b And Target.Column <= (b + 3) Then
MsgBox "Code hierhin!"
End If
End Sub
hallo horst
wenn es dir nur darum geht zu erfahren ob in dem bereich irgendwas geändert wurde,
versuchs mal so:
Option Explicit
Dim Total_Focus As Range
Private Sub Worksheet_Calculate()
On Error Resume Next
If Total_Focus.Value = Range("an11:ap200").Value Then MsgBox "Zelle(n) im Bereich geändert. "
Set Total_Focus = Range("an11:ap200")
End Sub
ransi
Öffne den VBA-Editor: Drücke ALT + F11
, um den VBA-Editor zu öffnen.
Wähle das Arbeitsblatt aus: Im Projektfenster auf der linken Seite, wähle das Arbeitsblatt, in dem du die Änderungen überwachen möchtest.
Füge den Code ein: Nutze den folgenden Code, um die Änderung in einem bestimmten Bereich zu überwachen:
Private Sub Worksheet_Calculate()
Static Total_Focus As Range
On Error Resume Next
If Total_Focus.Value = Range("AN11:AP200").Value Then
MsgBox "Zelle(n) im Bereich geändert."
End If
Set Total_Focus = Range("AN11:AP200")
End Sub
Schließe den VBA-Editor: Speichere deine Änderungen und schließe den Editor.
Teste den Code: Ändere eine Zelle im Bereich AN11:AP200 und beobachte die Meldung.
Fehler: Keine Meldung erscheint: Stelle sicher, dass die Worksheet_Calculate
-Methode korrekt implementiert ist. Überprüfe auch, ob die Zellwerte tatsächlich geändert werden.
Lösung: Du kannst auch die Worksheet_Change
-Methode verwenden, um direkte Änderungen zu überwachen. Beispiel:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AN11:AP200")) Is Nothing Then
MsgBox "Änderung in Zelle: " & Target.Address
End If
End Sub
Ereignis SelectionChange
: Diese Methode reagiert, wenn die Auswahl einer Zelle geändert wird. Dies ist nützlich, um eine Aktion auszulösen, ohne den Zellinhalt zu ändern.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("AN11:AP200")) Is Nothing Then
MsgBox "Du hast die Zelle " & Target.Address & " ausgewählt."
End If
End Sub
Verwendung von Formeln: Setze eine Formel in eine freie Zelle, um die Änderungen zu überwachen, wenn sich die Daten in den überwachten Zellen ändern.
Überwachung mehrerer Bereiche: Du kannst die Worksheet_Calculate
-Methode anpassen, um mehrere Bereiche zu überwachen:
Private Sub Worksheet_Calculate()
Dim rng As Range
Set rng = Union(Range("AN11:AP200"), Range("AQ11:AQ200"))
If Application.WorksheetFunction.CountA(rng) > 0 Then
MsgBox "Änderung in überwachten Bereichen."
End If
End Sub
Benachrichtigung bei spezifischen Werten: Füge eine Bedingung hinzu, um bei bestimmten Werten eine Benachrichtigung zu erhalten.
Nutze On Error Resume Next
: Damit verhinderst du Laufzeitfehler, die auftreten können, wenn z.B. der Bereich leer ist.
Kombiniere mehrere Ereignisse: Du kannst Worksheet_Calculate
mit Worksheet_Change
kombinieren, um sowohl manuelle Eingaben als auch Berechnungen zu überwachen.
Verstecke das Hilfsblatt: Wenn du ein Hilfsblatt für Berechnungen verwendest, kannst du es nach der Erstellung ausblenden, um die Übersichtlichkeit zu wahren.
1. Wie kann ich sicherstellen, dass der Code nur einmal pro Änderung ausgeführt wird? Verwende statische Variablen, um den letzten Zustand zu speichern und Änderungen nur bei tatsächlichen Änderungen auszulösen.
2. Was ist der Unterschied zwischen Worksheet_Calculate
und Worksheet_Change
?
Worksheet_Calculate
wird bei Berechnungen aktiviert, während Worksheet_Change
bei direkten Eingaben in Zellen reagiert.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen