Hallo,
Ich möchte, dass mein Vba Script "Public Sub Home_Anzeigen" immer dann ausgeführt wird, wenn sich ein Wert im Online Container ändert.
Das Script läuft soweit und wenn ich es manuell aufrufe macht es auch das was es soll. Der Fehler liegt also sicherlich im 'Programmteil, der das Script aufruft.
Weiters bekomme ich eine Fehlermeldung "Run-time error '13' Type mismatch" in folgender Zeile:
If thisProject.Variables.Item("Zelle[" & CStr(m) & "].Zelle_Frg").Value = 0 Then
Hier der gesamte Code:
Public WithEvents vHome_Anzeigen As OnlineVariable 'Home_Anzeigewerte
Const strHome_Anzeigen As String = "Home_Anzeigen"
'deactivate 'vHome_Anzeigen' event
If Not vHome_Anzeigen Is Nothing Then vHome_Anzeigen.Undefine
Set vHome_Anzeigen = Nothing
'Online Container erstellen und mit Werten füllen
Dim m As Integer
Set vHome_Anzeigen = thisProject.OnlineVariables.Item(strHome_Anzeigen)
If vHome_Anzeigen Is Nothing Then
'if not exitst, create a new OnlineVariable container
Set vHome_Anzeigen = thisProject.OnlineVariables.CreateOnlineVariables(strHome_Anzeigen)
'add variables to the container
m = 1
Do Until m > 200
vHome_Anzeigen.Add "Zelle_Anzeige1[" & CStr(m) & "]"
vHome_Anzeigen.Add "Zelle_Anzeige2[" & CStr(m) & "]"
vHome_Anzeigen.Add "Zelle_Anzeige3[" & CStr(m) & "]"
vHome_Anzeigen.Add "Zelle[" & CStr(m) & "].Zelle_Frg"
vHome_Anzeigen.Add "Zelle[" & CStr(m) & "].CA_Modus"
m = m + 1
Loop
vHome_Anzeigen.Add "Home1_Anzeigewert1"
vHome_Anzeigen.Add "Home1_Anzeigewert2"
vHome_Anzeigen.Add "Home1_Anzeigewert3"
vHome_Anzeigen.Add "ErrX_FirstScan[1]"
End If
'activate 'VariableChange' event
vHome_Anzeigen.Define
End Sub
'event is fired when a variable value changes Home_Anzeigen
Private Sub vHome_Anzeigen_VariableChange(ByVal obVar As IVariable)
Home_Anzeigen
End Sub
'Aktivierung und Deaktivierung der Werteanzeigen auf dem Homescreen
Public Sub Home_Anzeigen()
Dim m As Integer
m = 1
Do Until m > 200
If thisProject.Variables.Item("Zelle[" & CStr(m) & "].Zelle_Frg").Value = 0 Then
thisProject.Variables.Item("Zelle_Anzeige1[" & CStr(m) & "]").Value = 0
thisProject.Variables.Item("Zelle_Anzeige2[" & CStr(m) & "]").Value = 0
thisProject.Variables.Item("Zelle_Anzeige3[" & CStr(m) & "]").Value = 0
Else
If thisProject.Variables.Item("Zelle[" & CStr(m) & "].CA_Modus").Value = 1 Then
thisProject.Variables.Item("Zelle_Anzeige1[" & CStr(m) & "]").Value = thisProject.Variables.Item("Home1_Anzeigewert1").Value
thisProject.Variables.Item("Zelle_Anzeige2[" & CStr(m) & "]").Value = thisProject.Variables.Item("Home1_Anzeigewert2").Value
thisProject.Variables.Item("Zelle_Anzeige3[" & CStr(m) & "]").Value = thisProject.Variables.Item("Home1_Anzeigewert3").Value
Else
If (thisProject.Variables.Item("Home1_Anzeigewert1").Value = 4 Or thisProject.Variables.Item("Home1_Anzeigewert1").Value = 5) Then
thisProject.Variables.Item("Zelle_Anzeige1[" & CStr(m) & "]").Value = 0
Else
thisProject.Variables.Item("Zelle_Anzeige1[" & CStr(m) & "]").Value = thisProject.Variables.Item("Home1_Anzeigewert1").Value
End If
If (thisProject.Variables.Item("Home1_Anzeigewert2").Value = 4 Or thisProject.Variables.Item("Home1_Anzeigewert2").Value = 5) Then
thisProject.Variables.Item("Zelle_Anzeige2[" & CStr(m) & "]").Value = 0
Else
thisProject.Variables.Item("Zelle_Anzeige2[" & CStr(m) & "]").Value = thisProject.Variables.Item("Home1_Anzeigewert2").Value
End If
If (thisProject.Variables.Item("Home1_Anzeigewert3").Value = 4 Or thisProject.Variables.Item("Home1_Anzeigewert3").Value = 5) Then
thisProject.Variables.Item("Zelle_Anzeige3[" & CStr(m) & "]").Value = 0
Else
thisProject.Variables.Item("Zelle_Anzeige3[" & CStr(m) & "]").Value = thisProject.Variables.Item("Home1_Anzeigewert3").Value
End If
End If
End If
m = m + 1
Loop
End Sub
Danke für eure Hilfe!