首页 > 解决方案 > 不能在vba中单独添加数字的数字

问题描述

我希望能够将 4 位数字的各个数字加在一起,但它似乎不起作用。我纯粹在 VBA 代码中执行此操作。结果输出到工作表。我提取了部分代码并将其放入单独的宏中进行测试,仍然得到相同的结果。它将数字连接在一起。我添加了许多 msgbox 行以查看它在做什么,但无法弄清楚为什么在这种情况下 main 的值没有添加到 intm 变量中。变量 intd1 到 intd4 正确获取值,但是当我尝试将它们一起添加到 intm 中时,它只是将它们连接在一起。

Sub AddDigits()
'
' Add individual digits of number together
'
Dim intd1, intd2, intd3, intd4, main, intm As Integer

main = 1234
    intd1 = Left(main, 1)
MsgBox (intd1)
    intd2 = Mid(main, 2, 1)
MsgBox (intd2)
    intd3 = Mid(main, 3, 1)
MsgBox (intd3)
    intd4 = Right(main, 1)
MsgBox (intd4)
    intm = intd1 + intd2 + intd3 + intd4
MsgBox ("intm = " & intm & Chr(13) & _
        "intd1 = " & intd1 & Chr(13) & _
        "intd2 = " & intd2 & Chr(13) & _
        "intd3 = " & intd3 & Chr(13) & _
        "intd4 = " & intd4 & Chr(13))
End Sub

标签: vbaaddition

解决方案


当您按照您的方式声明变量时,第一位都是“变体”,而 VBA 您对 Mid、Left 和 Right 的使用都是字符串函数,因此 VBA 将变体转换为字符串:

在此处输入图像描述

如果您正确调暗变量,您会得到预期的结果:

Sub AddDigits()
'
' Add individual digits of number together
'
Dim intd1 As Integer, _
    intd2 As Integer, _
    intd3 As Integer, _
    intd4 As Integer, _
    main As Integer, _
    intm As Integer

main = 1234
    intd1 = Left(main, 1)
MsgBox (intd1)
    intd2 = Mid(main, 2, 1)
MsgBox (intd2)
    intd3 = Mid(main, 3, 1)
MsgBox (intd3)
    intd4 = Right(main, 1)
MsgBox (intd4)
    intm = intd1 + intd2 + intd3 + intd4
MsgBox ("intm = " & intm & Chr(13) & _
        "intd1 = " & intd1 & Chr(13) & _
        "intd2 = " & intd2 & Chr(13) & _
        "intd3 = " & intd3 & Chr(13) & _
        "intd4 = " & intd4 & Chr(13))
End Sub

在此处输入图像描述


推荐阅读