You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VBA中生成对应C++ MAKEWORD(2,2)的Integer类型值?

在VBA中生成与C++ MAKEWORD(2,2)一致的Integer值

嘿,这个问题核心是先搞清楚C++里MAKEWORD宏的本质,然后在VBA里复刻这个逻辑就行啦!

先明白MAKEWORD(2,2)到底生成了什么

C++的MAKEWORD(a, b)宏的作用是:把第一个参数a作为低8位字节,第二个参数b作为高8位字节,拼接成一个16位的无符号整数。对于MAKEWORD(2,2)来说,计算逻辑就是:
(2 << 8) | 2 → 也就是把2左移8位(得到512),再和2做位或运算,最终结果是十进制的514(十六进制0x0202)。

VBA中的实现方法

VBA里的Integer是16位有符号整数,而514在它的取值范围(-32768 ~ 32767)内,所以直接复刻这个位运算逻辑就可以:

方法1:直接计算

直接写一行代码得到结果:

Dim targetInt As Integer
targetInt = (2 << 8) Or 2  ' 结果就是514,和MAKEWORD(2,2)一致

方法2:封装成通用函数

如果需要多次调用类似逻辑,可以封装一个和MAKEWORD功能完全一致的VBA函数:

Function MAKEWORD(ByVal lowByte As Byte, ByVal highByte As Byte) As Integer
    ' 高字节左移8位,再和低字节做位或,拼接成16位整数
    MAKEWORD = (highByte << 8) Or lowByte
End Function

调用的时候就和C++里一样方便:

Dim myInt As Integer
myInt = MAKEWORD(2, 2)  ' 得到的myInt就是514

验证一下

你可以在VBA里用Hex(myInt)查看十六进制值,会得到0202,和C++中MAKEWORD(2,2)的十六进制结果完全一致,说明数值是对的。

内容的提问来源于stack exchange,提问作者Bogey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:29:41