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