Excel 在If语句中将变量用作子句

Excel 在If语句中将变量用作子句,excel,vba,class,if-statement,Excel,Vba,Class,If Statement,理想情况下,我想创建一个if语句,其中子句是wheter,变量是否有值。目前我有下面的代码 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
语句,其中子句是wheter,变量是否有值。目前我有下面的代码

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
在后续的运行过程中不会被更改

我不知道我是否正确理解您的意思,但是这里可能可以使用一个简单的类?嗯

类别模块<代码>限制

标准模块


您期望的数据类型是什么?在本例中,限制是什么?您可以测试.value=vbNullString或Limit=vbNullString
Limit
qill是否只是一个数字,所以我想这可能会起作用。我要和它玩一玩。看起来你在等一根弦。如果它是一个数字,那么在赋值之前它会被初始化为0。对,那么如果我说类似于
如果Limit=0,那么
会起作用吗?除非赋值为0
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