gpt4 book ai didi

vba - inputBox Excel VBA 整数问题

转载 作者:行者123 更新时间:2023-12-04 20:14:38 26 4
gpt4 key购买 nike

我是 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 控制这些输入变量对我来说很重要。

    最佳答案

  • 您需要声明 inputDecVariant
  • 您需要处理 Cancel按钮
  • 您需要将代码放入循环中,以便当用户输入无效数字时,输入框可以再次弹出。
  • 您需要使用 Application.InputBoxType:=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 Sub

    关于vba - inputBox Excel VBA 整数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30418155/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com