Использование переменной в качестве предложения в выражении If

В идеале я бы хотел создать оператор if котором предложение имеет значение, или переменная имеет значение. В настоящее время у меня есть код ниже.

If UpdateLimit = vbNo Then
 Limit = InputBox("Please set a line distance limit")
Else
 If LimitNow = vbNo Then
 Limit = InputBox("Please set a line distance limit") 
 End If

Что работает отлично, но я хотел бы изменить вложенный оператор If на что-то вроде

If Limit (Has Value)) then
 'Do thing 1 
Else 
 Limit= InputBox("Please set a line distance limit") 
End if

Идея заключается в том, что при первом прохождении вы определяете предельное значение, но второе прохождение через него вам не нужно. Там может быть лучший способ сделать это, но LimitNow и UpdateLimit будут изменены при последующих проходах

1 ответ

Я не знаю, правильно ли я вас понимаю, но, может быть, здесь можно использовать простой класс? НТН

Limit модуля класса

Private m_value As Variant

Private Sub Class_Initialize()
 Set m_value = Nothing
End Sub

Public Property Get Value() As Integer
 If Not HasValue Then
 Err.Raise "Limit doesn't have any number"
 End If
 Value = CInt(m_value)
End Property

Public Property Let Value(ByVal vNewValue As Integer)
 m_value = vNewValue
End Property

Public Property Get HasValue() As Boolean
 HasValue = IsNumeric(m_value)
End Property

Стандартный модуль

Sub test()
 Dim l As Limit
 Set l = New Limit

 On Error Resume Next

 Dim v As Integer
 v = l.Value ' Error here, limit doesn't have value yet

 On Error GoTo 0

 l.Value = 100
 If l.HasValue Then
 'Do thing 1
 Else
 l.Value = Application.InputBox("Please set a limit value", Type:=1)
 End If
End Sub

licensed under cc by-sa 3.0 with attribution.