Hallo,
ich habe mir die beiden Versionen nochmals angeschaut und möchte dich bitten vielleicht mal folgendes zu probieren?
Kopier die zwei Zeilen in das 'MyOPCGroup_DataChange'...
Code:
Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)
Stop
Debug.Print NumItems
'----------- Set the spreadsheet cell values to the values read
Range("B2").Value = CStr(ItemValues(1))
Range("C2").Value = Hex(Qualities(1))
Range("D2").Value = CStr(TimeStamps(1))
End Sub
Dann ändere mal den Wert der erste Variablen in deinem OPC, damit das DataChange-Ereigniss ausgelöst wird.
Der VBA-Kompiler wird dann auf dem Stop-Befehl stehen bleiben.
Mit der F8-Taste kannst du dann einen Schritt weitergehen und wirst den Wert in 'NumItems' sehen können.
Wenn ich nicht ganz daneben liege, müsste in 'NumItems' die Nummer des Wertes stehen welcher sich geändert hat.
Wenn du den zweiten Wert im OPC änderst, müsste in 'NumItems' "2" stehen.
Vorraussetzung ist natürlich dass du die oben beschriebene Erweiterung noch im Code drin hast....
Wenn meine Vermutung sich bestätigt, und 'NumItems' enthält die Nummer der Wertes welcher
sich geändert hat, könntest du vielleicht noch folgendes machen:
Code:
Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)
Select Case NumItems
Case 1
Range("B2").Value = CStr(ItemValues(1))
Case 2
Range("B4").Value = CStr(ItemValues(1))
End Select
'----------- Set the spreadsheet cell values to the values read
'Range("B2").Value = CStr(ItemValues(1))
Range("C2").Value = Hex(Qualities(1))
Range("D2").Value = CStr(TimeStamps(1))
End Sub
Es würde mich mal interssieren was dabei rauskommt.....
Gruss
Guido
Bookmarks