vba - 不能在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
解决方案
当您按照您的方式声明变量时,第一位都是“变体”,而 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
推荐阅读
- php - php将多个动态输入数据插入数据库
- javascript - 如何将数据从 Electron 传递到 HTML
- android - 如何将扫描的二维码图像保存在颤振中?
- python-3.x - 关于从堆栈中删除中间元素时递归堆栈的问题
- reactjs - 盖茨比蛞蝓断了
- javascript - 为什么'for'循环只返回数组中的最后一项?
- php - 未捕获的错误:在 php 中调用 null 上的成员函数 connection()
- reactjs - React 应用程序在本地运行良好,但在 Heroku 上部署后失败
- node.js - Telegram bot - 每天向用户发送消息
- python - 以货币显示的最大金额