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

Bereich überwachen

Bereich überwachen
03.01.2006 15:10:34
Horst
Hallo,
ich benötige eine VBA Lösung, welche einen bestimmten Bereich (z.B. eine Spalte)
überwacht und bei jeder (Wert) Änderung eine Prozedur aufruft
Ich benötige dann die Adresse der Zelle welche sich geändert hat.
Ich habe es mit Worksheet_Change versucht, das funktioniert prima, wenn ich eine
Zelle anklicke und den Wert dann ändere.
Wenn aber in der Zelle eine Formel oder ein Bezug steht geht diese Lösung natürlich nicht.
Es währe toll, wenn jemand einen Ansatz hätte.
Vielen Dank im Voraus
Horst
P.S. Der Korrekte Level ist. (Befriedigende Excel VBA Kentnise)

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereich überwachen
03.01.2006 16:13:00
Andi
Hi,
das Problem bei der Sache ist das, dass bei einer Formelberechnung statt des Change-Ereignisses das Calculate-Ereignis ausgelöst wird, welches leider kein Target kennt.
Vielleicht hilft Dir aus folgendem thread irgendwas weiter:
https://www.herber.de/forum/archiv/436to440/t438912.htm
die dort vorgeschlagene DirectDependents-Eigenschaft, die im Change-Ereignis die per Formel betroffenen Zellen ausgibt, funktioniert allerdings nur innerhalb einer Tabelle, also nicht in der ganzen Mappe und schon garnicht bei Bezügen auf andere Mappen.
Auf die Schnelle fällt mir da leider nix anderes ein, als alle Zellen, die zu einer Neuberechnung der Formeln führen könnten, zu überwachen.
Wenn's nur ein paar wenige Zellen sind, in denen Formeln stehen, dann könntest Du deren Werte auch in ein globales Array einlesen, und im Calculate-Ereignis einfach in allen nachgucken, ob sich was geändert hat.
Elegant is das aber alles nicht.
Schönen Gruß,
Andi
Anzeige
AW: Bereich überwachen
03.01.2006 16:33:01
Andi
Hi nochmal,
ich hab die Sache mit dem globalen Array mal für den Bereich A1:B6 gebastelt;
folgende Zeile gehört in ein Standard-Modul:
Public Zell_array(0 To 11) As Double 'ANPASSEN AUF (0 to [Anzahl der zu prüfenden Zellen - 1])
folgendes gehört in's Modul "DieseArbeitsmappe":

Private Sub Workbook_Open()
Dim c As Range
Dim i As Integer
i = 0
For Each c In Worksheets("Tabelle1").Range("A1:B6") 'TABELLENNAME UND BEREICH ANPASSEN
Zell_array(i) = c.Value
i = i + 1
Next c
End Sub

und folgendes in's Modul des Tabellenblatts:

Private Sub Worksheet_Calculate()
Dim c As Range
Dim i As Integer
i = 0
For Each c In Range("A1:B6")  'BEREICH ANPASSEN
If c.Value <> Zell_array(i) Then
MsgBox c.Address
Zell_array(i) = c.Value
End If
i = i + 1
Next c
End Sub

Schönen Gruß,
Andi
Anzeige
AW: Bereich überwachen
03.01.2006 20:28:08
Horst
Hallo Andi,
vielen Dank für Deine Mühen. Jetz habe ich erst mal wieder Ideen für mein
weiters Vorgehen.
Ich möchte für mein Problem eine wirklich elegante Lösung, weil ich sie vermutlich öfters
einsetzen kann.
Ich habe ein kleines SUB geschrieben, welches z.B. in 10 Spalten eine Bargraph darstellt
welches zwei Werte als Balkendiagramm darstellt. (Istzeit/Sollzeit)
Die beiden Werte kommen von einer externen Zeiterfassung.
Ich denke mit meinem Wissen und Können werde ich eventuell den Lösungsweg gehen, dass ich (beim Öffnen) in einer Schleife alle möglichen Zellen durchgehe und das SUB jedesmal neu aufrufe.
Nochmals vielen Dank
Gruß Horst
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige