Использование переменной в качестве предложения в выражении 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 ответ

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

<code>Limit</code> модуля класса

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.