Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

VBA nur ausführen, wenn eine bestimmte Zelle "aktualisiert" wird
#1
Hallo,

(wie) kann ich, ein Makro nur ausführen, wenn eine bestimmte Zelle ( in meinem Fall "AK16" ) aktualisiert wird, das Makro ausgeführt wird.

Danke vorab!
Antworten Top
#2
Hi,

versuch mal in dem Worksheet 'Change' folgenden Code
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("AK16")) Is Nothing Then Call 'Hier den Name deines Makro

End Sub

Grüße

J.K.H.
Antworten Top
#3
Hm kann ich so leider nicht bestätigen, da sich das gesamte Makro weiterhin bei jeder Änderung aktuallisiert/abläuft
Antworten Top
#4
Hallo

und was genau ist dann anders??  Wie und wodurch äußert sich die Änderung??
Ohne möglichst genaue Infos können wir nicht nachvollziehen was da anders ist.
Vielleicht kannst du uns ja dein Makro hochladne, damit wir verstehen was sich ändert..

mfg Gast 123
Antworten Top
#5
Hallo a...,

zu
Zitat:Hm kann ich so leider nicht bestätigen, da sich das gesamte Makro weiterhin bei jeder Änderung aktuallisiert/abläuft

Der Vorschlag von JKH ist ein (wahrscheinlich zusätzliches) Ereignismakro, in dem dein Makro nur durchgeführt wird wenn in AK16 eine Änderung gemacht wurde. Du must deinen alten Prozess das Makro anzustossen natürlich entfernen.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#6
Mir wird anhand eines Makros ein QR-Code aus vielen Kriterien erstellt, mich nervt es, dass dies jedesmal neu generiert wird (eigentlich nervt mich immer nur die 2-3 Sekunden Ladezeit) wenn ich nur einen Wert anpasse, mir reicht es, wenn ich einen bestimmten Wert ändere (einer der letzten) und erst dann der QR-Code neu generiert wird.
Antworten Top
#7
Hi,

im worksheet_change als erste Anweisung:

Code:
If intersect(target, Range("AK16") is nothing then exit sub
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#8
Moin,

ich würde Edgar's Empfehlung etwas abändern und generell von Exit Sub abraten. Besser ist m. E. einfach ein leerer Else-Zweig. Das hilft dabei, den Coder erweiterbar zu gestalten und vermeidet die nervenaufreibende Fehlersuche, die nur an einem übersehen Exit hängt.

Viele Grüße
derHöpp
Antworten Top
#9
(13.10.2023, 11:14)BoskoBiati schrieb: Hi,

im worksheet_change als erste Anweisung:

Code:
If intersect(target, Range("AK16") is nothing then exit sub

Dann gilt es aber wiederum für jedes Makro bzw. alles, ich möchte nur ein bestimmtes Makro ausführen, wenn eine bestimmte Zelle aktualisiert wird.


(13.10.2023, 11:23)derHoepp schrieb: Moin,
ich würde Edgar's Empfehlung etwas abändern und generell von Exit Sub abraten. Besser ist m. E. einfach ein leerer Else-Zweig. Das hilft dabei, den Coder erweiterbar zu gestalten und vermeidet die nervenaufreibende Fehlersuche, die nur an einem übersehen Exit hängt.
Viele Grüße
derHöpp

Hm, damit kann ich leider gar nichts anfangen >.<  
Antworten Top
#10
Hallo derHoepp,

ich halte es für deutlich sinnvoller, ein Makro sofort zu verlassen, wenn die aktive Zelle nicht im Bereich liegt, als das ganze Makro zu durchlaufen.

@andre,

Zitat:kann ich, ein Makro nur ausführen, wenn eine bestimmte Zelle ( in meinem Fall "AK16" ) aktualisiert wird

das geht eben nur über worksheet_change oder ähnliche Typen.

Mit meiner Zeile wird das Makro nicht weiter ausgeführt.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste