在VBA中声明静态字节数组



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

Dim A As Variant
A = Array(&H9F, &H2C, &H3B, &HFF, &H84)

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

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

所以我的问题是:有更好或更优雅的方法吗?

好吧,可能不是您想要的解决方案,但您可以将字符串直接转换为字节数组。。

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

Dim bResult() As Byte
bResult = StrConv(Join(Array(Chr(&H9F), Chr(&H2C), Chr(&H3B), Chr(&HFF), Chr(&H84)), vbNullString), vbFromUnicode)

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

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

最后你可以这样做:

Dim vValues As Variant 
vValues = Array(CByte(&H9F), CByte(&H2C), CByte(&H3B), CByte(&HFF), CByte(&H84))

最新更新