Gibt es eine Möglichkeit ein Makro über eine Formel aufzurufen. Vergleicht man in Celle a; b mit c und c ist größer gibt er mir 1 aus. Wenn nun 1 in zelle A1 erscheint (ohne enter nur über die Formel) soll ein Makro ausgeführt werden.
Danke
Michael
Private Sub Worksheet_Calculate()
If ThisWorkbook.Sheets("Tabelle1").Range("A1") = 1 Then
'mach was
End If
End Sub
Gruß Tino
Hi Michael,
in's Modul des Blattes z.B. Tabelle1:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count 1 Then Exit Sub
If Intersect(Target, Range("B:C")) Is Nothing Then Exit Sub
If Range("A" & Target.Row) = 1 Then Call MeinMakro
End Sub
Gruß
Reinhard
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
ist ja Target entweder eine Zelle oder ein Zellenbereich.
mit Count zähle ich die Zellen und wenn's nicht nur eine Zelle ist kommt Exit.
Intersect vergleicht Zellbereiche auf übereinstimmende Zelladressen.
Das Ergebnis von Intersect ist also eine Zelle oder ein Zellbereich der in (hier) beiden Zellbereichen enthalten ist.
Bei keiner Übereinstimmung ist Das Ergebnis "Nothing" ("Nothing" ist nicht Null oder Leer!)
Jetzt könnte es ja sein, durch Kopieren und Einfügen o.ä. änderst du durch Strg+V (was einer manuellen Eingabe entspricht) gleichzeig die Werte in C1:D100.
Da du in Ax stehen hast: =Bx+Cx so interessieren dich ja nur die Änderungen in der C-Spalte, die D-Spalte ist dir ja egal.
Es fällt auch die Überprüfung auf nur eine geänderte Zelle weg.
Also macht man das so
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Zelle as Range
Set Target=Intersect(Target, Range("B:C")) ' in meinem beispiel ist danach target=C1: _
C100
If Target is nothing Then Exit Sub
For each Zelle in Target
If Range("A" & Zelle.Row) = 1 Then Call MeinMakro
Next Zelle
End Sub
Gruß
Reinhard
Option Explicit
Dim BoAnzeige As Boolean
Private Sub Worksheet_Calculate()
If Range("A1") = 1 Then
If BoAnzeige = False Then MsgBox "Ja"
BoAnzeige = True
Else
BoAnzeige = False
End If
End Sub