Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
496to500
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
496to500
496to500
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro bei indirekter Änderung einer Zelle starten

Makro bei indirekter Änderung einer Zelle starten
06.10.2004 18:09:02
ThomasA.
Hallo,
ich habe folgendes Problem:
Das Markro1 soll ausgeführt werden wenn sich eine bestimmte zelle indirekt ändert. Mit folgendem Code

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1:A4")) Is Nothing Then
Makro1
End If
End Sub

wird das Makro1 nur ausgeführt, wenn ich eine der Zellen A1:A4 direkt ändere,
aber nicht wenn sich die Zellen indirekt (z.b. wenn in den zellen eine Formel steht) ändern...
Vielen Dank für eure Hilfe im voraus.
Gruß
Thomas

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro bei indirekter Änderung einer Zelle starten
Ulf
Calculate-Ereignis nutzen.
Ulf
AW: Makro bei indirekter Änderung einer Zelle starten
06.10.2004 18:21:26
ThomasA.
Danke Ulf für deine super schnelle Antwort,
könntest du mir zeigen wie der Code aussehen müsste? Bin noch totaler Neuling in VBA.
Danke im voraus.
AW: Makro bei indirekter Änderung einer Zelle star
06.10.2004 23:12:05
Matthias
Hallo Thomas,
ich klinke mich mal hier ein...
Das Calculate-Ereignis ist noch einfacher als das Change-Ereignis, er wird immer ausgeführt, wenn eine Berechnung im Blatt stattfindet.
Man kann also nur über Umwege die Änderung einer bestimmte Zelle/Zellbereiches überwachen.
z.B. ginge es mit einer Hilfszelle, in die der letzte Stand zwischengespeichert wird. Im Beispiel ist die Hilfszelle A3000:
Private Sub Worksheet_Calculate()
If [a1] <> [a3000] Then
MsgBox "A1 geändert!"
'Dein Makro hier
[a3000] = [a1]
End If
End Sub

Wenn der Bereich A1:A4 überwacht werden soll, ginge es z.B. so:
Private Sub Worksheet_Calculate()
If [a1] <> [a3000] Or [a2] <> [a3001] Or [a3] <> [a3002] Or [a4] <> [a3003] Then
MsgBox "A1:A4 geändert!"
'Dein Makro hier
[a3000] = [a1]
[a3001] = [a2]
[a3002] = [a3]
[a3003] = [a4]
End If
End Sub
Eventuell ginge es auch mit globalen Variablen, aber die sind nicht so "standhaft" wie Zellinhalte...
Gruß Matthias
Anzeige
AW: Makro bei indirekter Änderung einer Zelle star
07.10.2004 23:42:47
ThomasA.
Vielen Dank für deine schnelle Antwort Matthias. Jetzt hab ich das mit dem calculate schon besser verstanden. Es hat soweit auch funktioniert, mit einem ganz einfachem Makro (Makro1). Ich ändere die Zelle IJ4 und das Makro mit der Message "Rsa wurde geändert" erscheint, und der wert wird zwischengespeichert.
Wenn ich jetzt anstatt des Makro1 mein eigentliches Makro "MainProgram" (lösen einer 240x240 matrix, rechnet etwa 6sek an meinem pc) einsetze und die Zelle IJ4 ändere, kann ich in excel auf einmal nix mehr machen und muss über TaskManager beenden. Wenn ich das Makro einzeln starte funktioniert es ohne Probleme. Muss ich in dem calculate code noch irgendwie eine pause einfügen? wenn ja wie mache ich das am besten? Ich habe mal meine excel datei angehangen.
Danke im voraus.
http://home.arcor.de/smubob/Matrix.xls (432kb)
Gruß Thomas
Anzeige
AW: Makro bei indirekter Änderung einer Zelle star
08.10.2004 00:12:41
Matthias
Hallo Thomas,
bei der Berechnung wird sehr oft das Calculate-Ereignis aufgerufen, das dauert dann entsprechend viel länger. Der Code lässt sich übrigens mit Strg-Pause abbrechen, nicht nur mit dem Taskmanager.
Wenn während der Ausführung deines Makros die Änderung von IJ4 nicht überwacht werden muss, schalte die Ereignisüberwachung während der Makroausführung temporär aus:

Private Sub Worksheet_Calculate()
If [IJ4] <> [IJ7] Then
Application.EnableEvents = False
MainProgram
Application.EnableEvents = True
MsgBox "Rsa wurde geändert"
[IJ7] = [IJ4]
End If
End Sub

Dann gehts genauso schnell
wie manuell
(man beachte den Reim! ;-)
Grüße,
Matthias
Anzeige
AW: Makro bei indirekter Änderung einer Zelle star
08.10.2004 00:55:02
ThomasA.
Danke danke danke Matthias, jetzt funktioniert es einwandfrei, vielen dank, jetzt kann ich erstmal ruhiger schlafen ;-)... bis mein nächstes problem kommt...
Gruß
Thomas

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige