【发布时间】:2015-05-24 06:31:34
【问题描述】:
我是 VBA 新手,我正在尝试创建一个宏,它从 inputBox 接受 0 到 1000 之间的数字并将其转换为十六进制。很好,但我正在努力让程序接受该范围(0 - 1000)。这就是发生的事情:
- 如果我输入 -1 则会引发错误;
- 如果我输入 -1001,它会抛出 FFFFFFFC17;
- 如果我输入任何大于 1000 的值,它不会抛出 MsgBox(我现在不熟悉在 excel 上导致错误)。
我首先是这样做的:
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 控制这些输入变量对我来说很重要。
【问题讨论】: