Script que executa a cada 1 segundo

Bom dia! Criei um evento que roda o seguinte script a cada 1 segundo:

Sub Viewer_Simulacao()

'Verifica se as 2 bombas estão em operação
If Application.GetObject(“Dados.[BA-PLDA-01-PEST]”).Value=2 And Application.GetObject(“Dados.[BA-PLDA-02-PEST]”).Value=2 Then
Application.GetObject(“Dados.[TQ-PLDA-01-LI]”).Value=Application.GetObject(“Dados.[TQ-PLDA-01-LI]”).Value+0.56
End If

End Sub

Porém, ao executar, dá um erro de tempo de execução do Microsoft VBScript. Alguém já teve este problema?

1 Like

Olá Diego!
Tenta postar aqui um print da janela de erro ou o texto que aparece, assim fica mais fácil entender o erro no script.
De qualquer forma, não é recomendado ter scripts que executam dessa forma na aplicação. Talvez você consiga resolver seu problema usando uma função IIF em uma associação.

Algo assim:

IIf(Application.GetObject(“Dados.[BA-PLDA-01-PEST]”).Value=2 And Application.GetObject(“Dados.[BA-PLDA-02-PEST]”).Value=2, me.Value+0.56, me.Value)

Olá Lucas!

Esse código não deu certo:

IIf(Application.GetObject(“Dados.[BA-PLDA-01-PEST]”).Value=2 And Application.GetObject(“Dados.[BA-PLDA-02-PEST]”).Value=2, me.Value+0.56, me.Value)

A janela de erro que está aparecendo com o código que eu postei é essa:

erro

No caso do erro de script é porque a TQ-PLDA-01-LI está inicializando como string.

Assim, uma forma de prevenir isso por script seria:

Sub Viewer_Simulacao()
	Dim objTag

	Set objTag = Application.GetObject("Dados.[TQ-PLDA-01-LI]")
	
	If (VarType(objTag.Value) = vbString) Then
		' Inicializa variavel em 0 (Double)
		objTag.Value = CDbl(0)
	End If

	' Verifica se as 2 bombas estão em operação
	If (Application.GetObject("Dados.[BA-PLDA-01-PEST]").Value = 2 And _
			Application.GetObject("Dados.[BA-PLDA-02-PEST]").Value = 2) Then
		objTag.Value = objTag.Value + 0.56
	End If
End Sub

Oi Leandro. Estranho que eu copiei e colei o seu script e deu o mesmo erro aqui.

qual o retorno do script abaixo?

	Dim objTag
	Set objTag = Application.GetObject("Dados.[TQ-PLDA-01-LI]")
	MsgBox TypeName(objTag.Value) & ": " & VarType(objTag.Value)

Retorna o seguinte:erro

Qual linha? Suponho então que Dados.[BA-PLDA-01-PEST] ou Dados.[BA-PLDA-02-PEST] também está inicializada como String.