Microsoft Excel

Herbers Excel/VBA-Archiv

Macro Ereignissgesteuert | Herbers Excel-Forum


Betrifft: Macro Ereignissgesteuert von: Rainer
Geschrieben am: 22.10.2008 11:02:23

Hallo Leute,

hier eine Frage: Ich habe externe Daten von einem OPC -Server in einer Zelle wie folgt:
=TcpIpH1|WS!m9.1
Dann steht da je nach Zustand entweder WAHR oder FALSCH in der Zelle. Wie kann ich wenn der Zustand von FALSCH auf WAHR wechselt ein Makro starten, also ereignisgesteuert starten?

Bitte keinen Timer der auf das Ereignis pollt, habe ich schon, klappt nicht zuverlässig und schnell genug.

Grüße, Rainer.

  

Betrifft: AW: Macro Ereignissgesteuert von: Beverly
Geschrieben am: 22.10.2008 11:26:26

Hi Rainer,

verwende das Worksheet_Calculate Ereignis.


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Macro Ereignissgesteuert von: Ramses
Geschrieben am: 22.10.2008 11:26:57

Hallo

In einem Modul diese Variable anlegen

Public CellState as Boolean


Beim workbook_Open Ereignis die Variable mal füllen

Private Sub workbook_Open()
CellSTate = Tabelle!Zelle
End Sub



Nimm das Worksheet_Calculate Ereignis und frag die Zelle ab ob sich dort was geändert hat.

Private Sub Worksheet_Calculate()
If Cellstate <> Tabelle!Zelle Then
... was du willst.
End If
End If

oder ohne Variable

Private Sub Worksheet_Calculate()
If Tabelle!Zelle = False/True Then
... was du willst.
End If
End If

Gruss Rainer



  

Betrifft: AW: Macro Ereignissgesteuert von: Rainer
Geschrieben am: 22.10.2008 12:15:15

Genial, das geht ja tatsächlich.
Danke Ramses

Mache ne positive Flanke auf mein Ereigniss und starte die Routine:

If (CellState = True And CellState_alt = False) Then
MeineAnwendung
End If

CellState_alt = CellState

Um jedoch an den aktuellen Inhalt der Zelle zu kommen muss ich so was machen:

sheets("Batch_Daten").Select
CellState = Range("E17").Value

mit dem direkten Zugriff schaff ich das nicht, kannst Du mir kurz mal die korrekte Syntax für
den Tabelle!Zelle Zugriff verraten?

Danke schon mal..
Grüße, Rainer.


  

Betrifft: AW: Macro Ereignissgesteuert von: Ramses
Geschrieben am: 22.10.2008 13:12:43

Hallo

"...CellState = True And CellState_alt = False..."

Das ist doch Quatsch. Wie kann ein Zustand WAHR und gleichzeitig FALSCH sein.
Du arbeitest hier mit EXCEL und bewegst dich nicht in der Quantenphysik

Ich weiss nicht was du prüfen willst, denn es könnte auch nur mit der Prüfung alleine gehen ohne
den Umweg über die Variable
Der Zugriff geht auch ohne Select

CellState = Worksheets("DeineTabelle").Range("E17").Value

Gruss Rainer


  

Betrifft: Wer lesen kann... von: Ramses
Geschrieben am: 22.10.2008 13:14:02

Hallo

... ist klar im Vorteil.
Sorry.

If (CellState = True And CellState_alt = False) Then

Ohne die Klammern

Gruss Rainer


  

Betrifft: AW: If Boolean = True ... von: Erich G.
Geschrieben am: 22.10.2008 13:29:53

Hi zusammen,
kann man davon ausgehen, dass CellState und CellState_alt vom Typ Boolean sind?

Dann reicht doch
If CellState And not CellState_alt Then

So etwas sieht man seeeehr oft: If CellState = True then ...
Wenn CellState = True ist steht da: If True = True then ...,
wenn CellState = False ist steht da: If False = True then ....

Da kann man doch besser If CellState then ... schreiben.

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: If Boolean = True ... von: Rainer
Geschrieben am: 22.10.2008 14:32:57

Danke erstmal für die Anteilnahme:

ich bin nur SPS-Programmierer. Deshalb die etwas ausführlichere Anweisung:

If (CellState = True And CellState_alt = False) Then ......

CellState vom Typ Bool ist der aktuelle Zustand der Zelle beim Aufruf
von Worksheet_Calculate();
CellState_alt vom Typ Bool speichert den Zustand vom letzten Aufruf
von Worksheet_Calculate();

Ich darf in diesem Fall nur EINMAL die Routine aufrufen, egal wie lange CellState auf TRUE ist,
oder egal wer sonnst noch Worksheet_Calculate() aufruft.
Also nur dann wenn Cellstate von FALSE nach TRUE wechselt.

Grüße und nochmal danke,
Rainer.





  

Betrifft: AW: If Boolean = True ... von: Ramses
Geschrieben am: 22.10.2008 18:00:03

Hallo Erich

Ich weiss du bist ein begnadeter Programmierer und lese deine ständigen Kommentare auf meine Beiträge.

Aber ich programmiere hier nun mal Beispiele, bzw. mach Vorschläge, für Anfänger und nicht Profis !!
Die haben schon Probleme normale Anweisungen zu verstehen, geschweige denn solche wo dann Teile "fehlen" und die nicht in der Online Hilfe nachgelesen oder erklärt werden können
Denn wie du schon so schön bemerkt hast: "... kann man davon ausgehen ..."

Dazu muss auch noch der Variablentyp erklärt werden und deren Zusammenhänge, bzw. korrekte Syntax.

Ausserdem bin ich der Meinung, wenn das Problem mit einer Antwort gelöst ist, dann sollte es gut sein.

Gruss Rainer