首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VBA中声明一个静态字节数组

在VBA中声明一个静态字节数组
EN

Stack Overflow用户
提问于 2022-03-12 00:14:43
回答 1查看 89关注 0票数 0

我可以像这样在VBA中声明一个静态字节数组,但是这些元素似乎不是字节类型的。

代码语言:javascript
复制
Dim A As Variant
A = Array(&H9F, &H2C, &H3B, &HFF, &H84)

我可以通过将内容复制到第二个数组来解决这个问题,但在我看来这并不是很有效。

代码语言:javascript
复制
Dim A As Variant
A = Array(&H9F, &H2C, &H3B, &HFF, &H84)
Dim N As Long: N = UBound(A)
Dim B() As Byte
ReDim B(N)
For X = 0 To N
    B(X) = A(X)
Next

所以我的问题是:是否有更好或更优雅的方法来做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-12 00:58:04

好吧,可能不是你想要的解决方案,但是你可以直接把一个字符串转换成一个字节数组。

所以,以你为例,像这样的事情(疯狂)会奏效的。

代码语言:javascript
复制
Dim bResult() As Byte
bResult = StrConv(Join(Array(Chr(&H9F), Chr(&H2C), Chr(&H3B), Chr(&HFF), Chr(&H84)), vbNullString), vbFromUnicode)

第二种方法是更新原始数组中的元素。它仍然需要一个循环,但是条目将由Bytes完成。

代码语言:javascript
复制
Dim i As Long
Dim vValues As Variant: vValues = Array(&H9F, &H2C, &H3B, &HFF, &H84)
For i = LBound(vValues) To UBound(vValues)
    vValues(i) = CByte(vValues(i))
Next i

最后,您可以这样做:

代码语言:javascript
复制
Dim vValues As Variant 
vValues = Array(CByte(&H9F), CByte(&H2C), CByte(&H3B), CByte(&HFF), CByte(&H84))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71445913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档