我是VBA的新手,我正在尝试创建一个宏,该宏从inputBox接受0到1000之间的数字,并将其转换为十六进制。很好,这是可行的,但我正在努力保持程序接受这个范围(0-1000)。这就是发生的事情:
我先做了这样的事:
Sub DecToHex()
Dim inputDec As Integer
Dim outputHex As String
inputDec = InputBox("Decimal?")
If inputDec <= 1000 And inputDec >= 0 Then
outputHex = Application.WorksheetFunction.Dec2Hex(inputDec)
MsgBox ("Hex: " + outputHex)
Else
MsgBox ("Error! Please define decimal. It must be larger than zero and less than 1001")
inputDec = InputBox("Decimal?")
outputHex = Application.WorksheetFunction.Dec2Hex(inputDec)
MsgBox ("Hex: " + outputHex)
End If
End Sub但是,我认为inputBox给我输入作为字符串,所以也许我应该接受值作为字符串,所以我改变了:
Dim inputDec As Integer
'Changed to
Dim inputDec As String 对变量的控制仍然很差。它接受- 1200,也是1200 )。你能指出我做错了什么吗?也许是因为工作表的作用,我读得不好。我知道这是新手的错误,但是了解如何从inputBox控制这些输入变量对我来说很重要。
发布于 2015-05-23 22:31:34
inputDec声明为VariantCancel按钮Application.InputBox与Type:=1结合使用,这样才能接受数字。尝尝这个
Sub DecToHex()
Dim inputDec As Variant
Dim outputHex As String
Do
inputDec = Application.InputBox("Decimal?", Type:=1)
'~~> Handle Cancel
If inputDec = "False" Then Exit Do
If inputDec <= 1000 And inputDec >= 0 Then
outputHex = Application.WorksheetFunction.Dec2Hex(inputDec)
MsgBox ("Hex: " + outputHex)
Exit Do '<~~ Exit the loop
Else
MsgBox ("Error! Please define decimal. It must be larger than zero and less than 1001")
End If
Loop
End Subhttps://stackoverflow.com/questions/30418155
复制相似问题