Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带基数2增量的循环的VBA_Vba_For Loop - Fatal编程技术网

带基数2增量的循环的VBA

带基数2增量的循环的VBA,vba,for-loop,Vba,For Loop,为了识别位掩码值的内容,我需要一个有效的VBA解决方案来迭代可能的1、2、4、8。。跳过中间的任何内容 现在,我唯一的解决方案是迭代整个范围,并检查当前迭代是否是以2为基数的数字 For i = ErrorType.[_First] To ErrorType.[_Last] If isBase2(i) Then ... End If Next i 我在想一些类似于这个Java代码片段的东西 for(int i = 0; i < x; i = Math.pow(2, i++

为了识别位掩码值的内容,我需要一个有效的VBA解决方案来迭代可能的1、2、4、8。。跳过中间的任何内容

现在,我唯一的解决方案是迭代整个范围,并检查当前迭代是否是以2为基数的数字

For i = ErrorType.[_First] To ErrorType.[_Last]
  If isBase2(i) Then
    ...
  End If
Next i
我在想一些类似于这个Java代码片段的东西

for(int i = 0; i < x; i = Math.pow(2, i++)) {
  ...
}

但是,我还无法在VBA中复制这一点,而不会导致无休止的循环。

在java中,更多地考虑int I=1;“I0不是2的幂,”让·弗朗索瓦·科贝特(Jean-FrançoisCorbett)当然会这样描述。实际位掩码不包括0。
Dim i As Integer
i = 1

Do While i <= x
    i = i * 2
Loop
Dim pow As Long
Dim i As Long
For pow = -1 To 4 'or however high you want to go
    If pow = -1 Then
         i = 0 ' Special case: 0 isn't a power of 2
    Else
         i = 2 ^ pow
    End If
    Debug.Print i
Next pow