不能在vba中将数字单独加在一起

问题描述 投票:0回答:2

我希望能够将4位数字的各个数字加在一起,但这似乎不起作用。我纯粹是在VBA代码中执行此操作。结果输出到工作表。我已经提取了部分代码,并将其放入单独的宏中进行测试,但仍获得相同的结果。它将数字连接在一起。我添加了许多msgbox行以查看其作用,但是无法弄清楚为什么在这种情况下,main的值未加到intm变量中。从变量intd1到indd4可以正确获取值,但是当我尝试将它们一起添加到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
vba addition
2个回答
2
投票

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

enter image description here

如果您适当地使变量变暗,您将获得预期的结果:

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

enter image description here


0
投票

除了上述答案,您还可以在代码的后面任意位置转换数据类型。要将任何内容转换为int,请使用Cint。同样,对于其他类型转换,请检查link

 intm = CInt(intd1) + CInt(intd2) + CInt(intd3) + CInt(intd4)
© www.soinside.com 2019 - 2024. All rights reserved.