Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1168to1172
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

Wenn Zellwert sich ändert soll ein Macro laufen

Wenn Zellwert sich ändert soll ein Macro laufen
Helga
Hallo zusammen,
ich möchte, wenn sich der Wert einer Zelle von "" auf 1 ändert,
ein Makro aufgerufen wird. Es soll aber ständig der Zellwert überprüft
werden. Der Zellwert ändert sich aber maximal für eine Sekunde,
danach ist der Wert der Zelle wieder ""
Doch hiermit klappt es nicht:

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("L41") = True Then Call Übertrag
End Sub
Wo habe ich den Fehler?
Danke schon mal im Voraus
Helga


		
AW: Wenn Zellwert sich ändert soll ein Macro laufen
26.07.2010 13:22:48
Dirk
Hallo Helga,
wie wird denn der Wert in der Zelle geaendert? Erfolgt das durch Benutzereingabe oder durch ein Macro?
Gruss
Dirk aus Dubai
AW: Wenn Zellwert sich ändert soll ein Macro laufen
26.07.2010 13:27:01
Helga
in der Zelle steht eine Formel.
Gruß
Helga
AW: Wenn Zellwert sich ändert soll ein Macro laufen
26.07.2010 13:30:13
JogyB
Hallo Helga,
dann geht es nicht so wie ich es im anderen Posting geschrieben habe, da sich L41 für das Worksheet_Change Ereignis nie ändert. Welches sind denn die Zellen, die in der Formel stehen? Liegen die auf demselben Tabellenblatt?
Gruß, Jogy
AW: Wenn Zellwert sich ändert soll ein Macro laufen
26.07.2010 13:27:16
JogyB
Hallo Helga,
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("L41"), Target) Is Nothing Then
If Range("L41") = 1 Then Call Übertrag
End If
End Sub
TRUE entspricht in VBA -1 und nicht 1. Und das Intersect(...) ist dazu da um zu prüfen, ob sich die Zelle überhaupt geändert hat. Sonst steht da doch mal länger 1 in der Zelle und bei jeder Änderung einer anderen Zelle wird dann wieder Übertrag ausgeführt.
Gruß, jogy
Anzeige
AW: Wenn Zellwert sich ändert soll ein Macro laufen
26.07.2010 18:02:05
Helga
Also,
erst einmal Danke, aber leider läuft das nicht :-(
In meiner Tabelle "D2" läuft ein Counter rückwärts, der mir Stunde, Minute und Sekunde anzeigt.
Diesen Counter aber starte ich selber.
In der Zelle "J41" habe ich die Formel =MINUTE(D2)
und in "K41" habe ich die Formel =SEKUNDE(D2) stehen.
Nun frage ich in Zelle "L41" =WENN(und(J41=0;K41=0);1;"")
Und wenn dann in "L41" eine 1 erscheint, soll das Makro "Übertrag" ausgeführt werden.
In Zelle "L41" erscheint dann auch die 1, aber das Makro wird trotzdem nicht ausgeführt.
Ich bringe es einfach nicht fertig :-((
Helga
Anzeige
AW: Wenn Zellwert sich ändert soll ein Macro laufen
26.07.2010 18:26:00
JogyB
Hallo Helga,
geht das?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim pruefRange As Range
Dim nextLevel As Range
On Error GoTo errorHandler
Set pruefRange = Range("L41")
Set nextLevel = pruefRange.Precedents
' Vorgänger sammeln, also die Zellen, die in der Formel stehen
Do
Set pruefRange = Union(pruefRange, nextLevel)
Set nextLevel = nextLevel.Precedents
Loop
weiter:
On Error GoTo 0
If Not Intersect(Target, pruefRange) Is Nothing Then
If Range("L41") = 1 Then Call Übertrag
End If
Exit Sub
errorHandler:
Resume weiter
End Sub
Wieso prüfst Du eigentlich nicht direkt D2, also so:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D2")) Is Nothing Then
If IsDate(Range("D2").Text) Then
If Minute(Range("D2")) = 0 And Second(Range("D2")) = 0 Then
Call Übertrag
End If
End If
End If
End Sub
Gruss, Jogy
Anzeige
AW: Wenn Zellwert sich ändert soll ein Macro laufen
26.07.2010 19:15:03
Helga
Hallo Jogy,
danke, das erste Sub läuft nicht, aber das zweite läuft super.
Nur....
kann ich nach der Ausführung Makro "Übertrag" noch eine Sekunde Pause einlegen,
denn das Makro wird 2 Mal ausgeführt.
Gruß
Helga
AW: Wenn Zellwert sich ändert soll ein Macro laufen
26.07.2010 19:24:29
JogyB
Hallo Helga,
ja, das geht. Um es richtig gut zu machen, bräuchte ich eine Beispielmappe, aber das sollte auch tun:
Private Sub Worksheet_Change(ByVal Target As Range)
Const paUse = 1 ' pause in Sekunden
If Not Intersect(Target, Range("D2")) Is Nothing Then
If IsDate(Range("D2").Text) Then
If Minute(Range("D2")) = 0 And Second(Range("D2")) = 0 Then
If Not keinÜbertrag Then
keinÜbertrag = True
Call übertrag
Application.OnTime Now + TimeSerial(0, 0, paUse), "resetMarker"
End If
End If
End If
End If
End Sub

Und das hier noch in ein allgemeines Modul (also nicht in ein Modul, das zu einer Tabelle gehört):

Public keinÜbertrag As Boolean
Public Sub resetMarker()
keinÜbertrag = False
End Sub

Gruß, Jogy
Anzeige
AW: Wenn Zellwert sich ändert soll ein Macro laufen
26.07.2010 20:00:56
Helga
Hallo Jogy,
vielen Dank :-))
Ich habe es endlich geschafft :-)
Habe jetzt einfach einfach nur eine "Application.Wait" von 1 Sekunde
nach dem Makro "Übertrag" eingesetzt.
Nochmals vielen Dank und noch einen schönen Abend wünscht Dir
und natürlich auch der ganzen Gemeinde hier
Helga

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige