Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

einmalig Makro wenn Zellwert sich ändert

Forumthread: einmalig Makro wenn Zellwert sich ändert

einmalig Makro wenn Zellwert sich ändert
16.07.2004 08:09:44
Gerold
Hallo Forum,
ich habe eine Frage zu einer bestimmten Funktion.
Ich möchte ein Makro ausführen wenn ein bestimmter Wert
in einer Zelle steht.
Ich habe das folgendermaßen realisiert. (Code ist teilweise aus diesem Forum)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("K40") = 0 Then
Range("D57:G58").Select
Selection.ClearContents
End If
Range("A39").Select
End Sub

Nun kommt meine Frage:
Da diese Bedingung (("K40") = 0) danach erhalten bleibt,
wird das Makro immer wieder ausgeführt.
Gibt es eine Möglichkeit dies abzufangen.
Beispiel: Wechsel K40 von 1 nach 0 dann Makro
Für Eure Hilfe im voraus schon mal vielen Dank
Gruß
Gerold Dornbusch
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: einmalig Makro wenn Zellwert sich ändert
16.07.2004 08:31:08
joel
hallo gerold
nimm nicht das selectionchang-ereignis, sondern das change-ereignis, das immer dann auftritt, wenn ein zellwert geändert wird.
prüfe anschliessend, ob target der zelle k40 entspricht, wenn ja, prüfe denn zellwert (value)
gruss joel
ps:
prüfen, ob target zelle k40 entspricht:
if not intersect(target, tabelle1.range("K40")) is nothing then
zellwert prüfen:
if target.value = 0 then
Anzeige
AW: einmalig Makro wenn Zellwert sich ändert
16.07.2004 08:35:49
Andre
Wenn ich´s richtig verstanden habe, sollte dir folgender Code helfen:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "K40" Then
If Range("K40") = 0 Then
Range("D57:G58").Select
Selection.ClearContents
End If
Range("A39").Select
End If
End Sub

Gruß Andre
Anzeige
AW: einmalig Makro wenn Zellwert sich ändert
Jan
Hi Gerold,
Ändere mal den VBA-Code wie folgt:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("K40") = 0  Then
Range("D57:G58").Select
Selection.ClearContents
End If
Range("k40") = 1
End Sub

Jetzt wird das Makro erst ausgeführt, wenn in der Zelle K40 nichts
steht.
Jan
Anzeige
AW: einmalig Makro wenn Zellwert sich ändert
16.07.2004 08:59:49
Gerold
Hallo Joel,Hallo Andre,Hallo Jan,
vielen Dank für die schnellen Antworten,
ich muss die Vorschläge jetzt der Reihe nach testen
und werde mich dann wieder melden.
Ich muss noch eine Info hinzufügen.
Die Zelle K40 wird bei mir nie ausgewählt, in dieser Zelle ändert sich nur
der Wert von 0 nach 1 und umgekehrt.
Das Makro darf nur bei 0 einmalig ausgelöst werden.
Wie müsste die Lösung dann aussehen.
(ich bin noch Anfänger was VBA betrifft)
Gruß
Gerold Dornbusch
Anzeige
AW: einmalig Makro wenn Zellwert sich ändert
16.07.2004 09:25:12
Andre
Ok, dann ist mein Ansatz nicht wirklich hilfreich gewesen, denn mit ihm wird das Ereignis nur ausgelöst, wenn in K40 eine Eingabe getätigt wird! Muß man ja wissen!
Dann nehme ich an, in K40 steht eine Formel, die du auch weiterhin nutzen möchtest.
Mal sehen was man da machen kann.
AW: einmalig Makro wenn Zellwert sich ändert
16.07.2004 09:38:45
Gerold
Hallo Andre,
du hast mit deiner Vermutung (Formel in Zelle, die benötigt wird)recht!
Meine Infos waren auch nicht vollständig, aber ich denke
das Problem ist jetzt klar.
Gruß
Gerold Dornbusch
Anzeige
AW: einmalig Makro wenn Zellwert sich ändert
16.07.2004 09:37:00
joel
hallo gerold
wenn in zelle k40 (nur) eine formel steht, dann bringt dir die abfrage, ob diese zelle geändert wurde nichts..
diese zelle reagiert dann höchstens auf das "calculate-ereignis". das abzufangen ist jedoch auch eher zeitverschwendung
am besten du löst das problem mit einer static-variable

Private Sub Worksheet_Change(ByVal Target As Range)
Static vZellwert As Variant         'ist zu beginn "Empty"
'prüfen, ob die zelle ein neuer wert erhalten hat
If vZellwert <> Feuil1.Range("C4").Value Then
'makro ausführen
MsgBox "makro ausführen"
'neuen zellwert merken
vZellwert = Feuil1.Range("C4").Value
End If
End Sub

gruss joel
Anzeige
sprachensalat..
16.07.2004 09:38:59
joel
hallo gerold
noch was kleines:
arbeite hier auf nem französischen system, deshalb musst du bei dir wohl "Feuil1" noch mit "Tabelle1" ersetzen
und dann noch "C4" mit "K40"
zusätzlich bei "msgbox "makro ausführen"" dein makro einfügen
gruss joel
AW: sprachensalat..
16.07.2004 10:43:02
Gerold
Hallo joel,
Deine Lösung funktioniert,
ich habe sie nur noch etwas angepasst.


Private Sub Worksheet_Change(ByVal Target As Range)
Static vZellwert As Variant         'ist zu beginn "Empty"
'prüfen, ob die zelle ein neuer wert erhalten hat
If vZellwert <> Sheets("Maschinenangaben").Range("K40").Value Then
'makro oder funktion ausführen
Range("D57:G58").Select
Selection.ClearContents
'neuen zellwert merken
vZellwert = Sheets("Maschinenangaben").Range("K40").Value
End If
Range("A39").Select
End Sub

Vielen Dank und schönes Wochenende (auch an Jan und Andre)
Gruß
Gerold Dornbusch
Anzeige
noch eine kleinigkeit
16.07.2004 10:48:19
joel
hallo gerold
wenn wir schon dabei sind...
Range("D57:G58").Select
Selection.ClearContents
kannst du gleich in einer zeile schreiben... Range("D57:G58").ClearContents
ich würd übrigens das tabellenblatt noch vornedran nehmen..
Sheets("Maschinenangaben").Range("D57:G58").ClearContents
gruss

Anzeige
AW: noch eine kleinigkeit
16.07.2004 12:44:38
Gerold
Hallo joel,
nochmals vielen Dank.
Gruß
Gerold
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige