У меня есть сценарий VBA, который выглядит следующим образом:
1, он будет запускаться, когда выбран конкретный лист
2, он будет проверять, является ли условие True
3, если это так, показать MsgBox
Private Sub Worksheet_Activate()
Dim current As Double
current = Round(((Range("AJ9").Value / Range("AG9").Value) * 100), 1)
If Range("AJ9").Value / Range("AG9").Value < 0.15 Then
MsgBox "Here is some message and some value: " & current & "%."
End If
End Sub
Я хочу показывать этот MsgBox только первый раз, когда пользователь заходит на лист. Теперь он появляется каждый раз, когда пользователь попадает на лист. Я попытался использовать переменную из другого Sub, но кажется, что он не работает.
Public read As Boolean
Sub readValue(Optional readArg As Boolean)
MsgBox readArg
read = (readArg Or False)
End Sub
, а затем я изменил первый Sub, как это:
Private Sub Worksheet_Activate()
Dim current As Double
current = Round(((Range("AJ9").Value / Range("AG9").Value) * 100), 1)
Call readValue
If read = False Then
If Range("AJ9").Value / Range("AG9").Value < 0.15 Then
MsgBox "Here is some message and some value: " & current & "%."
readValue read = True
End If
End If
Но MsgBox readArg
всегда говорит False
. Это похоже на то, что оно не посылает ценности вообще. Поэтому MsgBox показывает каждый раз, когда пользователь приходит на лист.
Что я делаю не так?