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

VBA: Wenn Zelle sich ändert, dann...

VBA: Wenn Zelle sich ändert, dann...
01.11.2002 19:52:34
Andi
Suche eine VBA-Anweisung, die mir dabei hilft, das wenn sich z.b. Zelle a1 ändert in zelle a2 "hallo" geschrieben wird.

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: VBA: Wenn Zelle sich ändert, dann...
01.11.2002 19:59:39
PeterW
Hallo Andi,

folgenden Code in das Modul der Tabelle:

Gruß
Peter

Re: VBA: Wenn Zelle sich ändert, dann...
01.11.2002 20:23:25
Andi
Kann man darum auch eine Schleife binden, ohne dass sich der Compi sozusagen aufhängt? Meine das so, daß das sub im Hintergrund läuft und die Zelle A1 ständig und automatisch auf Veränderungen überwacht.

Wie sieht das ganze dann aus?



Re: VBA: Wenn Zelle sich ändert, dann...
01.11.2002 20:26:39
PeterW
Hallo Andi,

das Ganze LÄUFT ständig im Hintergrund. Im VBA-Editor Doppelklick auf die Tabelle, in der der Code arbeiten soll (also Tabelle1, Tabelle2 oder wie Deine Tabelle sonst heißt) und in dieses Modul eintragen (nicht in ein Standardmodul).

Gruß
Peter

Anzeige
Info
01.11.2002 20:36:07
Ramses
Hallo Peter,

leider nicht ganz :-(
Wenn der Zellwert eine Verknüpfung auf eine andere Zelle oder eine andere Tabelle ist, wird keine Aktion ausgelöst.
Die Aktion wird nur bei "Change", als wenn der Zellinhalt verändert wird, ausgelöst. Dieser, nämlich die Formel, wird aber gar nicht verändert.

Workaround:
Aufwändig aber tut:
Mit Application.OnTime in regelmässigen Abständen den Zellwert abfragen und in eine globale Variable schreiben. Dann kannst du den Zellwert mit der Variable vergleichen und bei Änderungen informieren.

Gruss Rainer

Re: Info
01.11.2002 20:38:51
PeterW
Hallo Rainer,

Danke für den Hinweis!

Gruß
Peter

Anzeige
Re: Info
01.11.2002 22:35:10
Andi
Irgendwie hab ich noch ein Problem: Zelle A1 wird durch eine DDE-Verbindung automatisch erneuert. Leider werden da keine Veränderungen angezeigt (wie schon von Rainer angemerkt).

Kann man das vielleicht so machen, das ich den Wert aus Zelle A1 in Zelle B1 geschrieben wird und Zelle B1 auf Veränderungen überwacht wird? Allerdings brauche ich ne Schleife, die die veränderungen von A1 nach B1 übernimmt...

Oder wie geht das mit Application.OnTime und in eine globale Variable schreiben, z.b. alle 15 Sekunden auf Veränderungen überprüfen. Bräuchte evtl. mal ein Beispiel-Script!!!

Re: Info
01.11.2002 22:49:39
PeterW
Hallo Andi,

wie Rainer schon schrieb, ziemlich aufwändig. Gib in der Recherche als Suchbegriff mal OnTime ein und folge der zweiten und vierten Fundstelle.

Gruß
Peter

Anzeige
VBA-Code für Prüfung
02.11.2002 10:28:40
Ramses
Hallo Andi,

dieser Code überprüft jede Minute, zu definieren unter OnTime, ob der Wert sich geändert hat.

'In das Klassenmodul "Diese Arbeitsmappe"
Private Sub Workbook_Open()
'Start der Control-Routine
Ctrl_Each_Minute
End Sub

'In ein Modul
Public CtrlValue, Mldg As Long


Sub Control_each_Minute()
'Variablen erstellen
Dim Qe As Integer
Dim Msg As String, wks As String, myCell As String
'Variablen vorbereiten
Msg = ""
wks = "Tabelle1" 'Tabelle in welcher der Wert steht
myCell = "A1" 'Zelle die geprüft werden soll
'Beim ersten Start muss die Variable geprüft und gefüllt werden
If IsEmpty(CtrlValue) Then
    CtrlValue = Worksheets(wks).Range(myCell)
    Mldg = 0
End If
'Start für die nächste Kontrolle
Application.OnTime Now() + TimeValue("00:01:00"), "control_each_Minute"
'Meldung wenn der Wert geändert wurde
If Worksheets(wks).Range(myCell) <> CtrlValue Then
    Msg = "Der Kontrollwert " & CtrlValue & " hat sich geändert." & Chr$(13)
    Msg = Msg & "Möchten Sie den neuen Wert " & Worksheets(wks).Range(myCell) & " als Kontrollwert übernehmen ?"
    If Mldg > 0 Then
        Qe = MsgBox(Msg, vbCritical + vbYesNo + vbDefaultButton1, "ACHTUNG:   " & Mldg & ".    ÄÄnderungsinformation")
            If Qe = 6 Then
                'Übernahme des neuen Wertes als Control wert
                CtrlValue = Worksheets(wks).Range(myCell)
                'Zurücksetzen des Counters
                Mldg = 0
                Exit Sub
        End If
        'Aufaddieren des Counters
        Mldg = Mldg + 1
    Else
        Qe = MsgBox(Msg, vbCritical + vbYesNo + vbDefaultButton1, "ACHTUNG: ÄÄnderungsinformation")
            If Qe = 6 Then
                'Übernahme des neuen Wertes als Control wert
                CtrlValue = Worksheets(wks).Range(myCell)
                'Zurücksetzen des Counters
                Mldg = 0
                Exit Sub
        End If
        'Aufaddieren des Counters
        Mldg = Mldg + 1
    End If
End If
End Sub

     Code eingefügt mit Syntaxhighlighter 1.14

Gruss Rainer

Anzeige
Re: VBA-Code für Prüfung
02.11.2002 17:04:59
Andi
Super-Script!!!

Wo setze ich denn einen Startbutton hin, mit dem ich durch anklicken bestimmen kann, das ab dann jede Minute geprüft werden soll?

Wo kommt der Stopbutton hin?

Re: VBA-Code für Prüfung
02.11.2002 20:34:13
Andi
Für alle Interessierten gehts weiter unter: www.herber.de/forum/messages/176468.html

360 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige