我注意到在偏移方法中使用变量的一些奇怪的行为。
这是我的代码
Dim r As Integer
r=1
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, 0 + (r = 1)).Select
第一个选择似乎按预期工作,它选择右侧一列的单元格。
但是,第二个实际上选择了一列到左边的单元格!这似乎意味着0 + (r =1)
正在评估-1,这似乎很奇怪。
我有什么遗失的吗?
答案 0 :(得分:2)
以下是MSDN的引用:
当
Visual Basic
将数字数据类型值转换为Boolean
时,0
变为False
,所有其他值变为True
。当Visual Basic
将Boolean
值转换为数字类型时,False
变为0
,True
变为-1
。
您可以使用以下测试轻松检查:
MsgBox CInt(True) ' returns -1
MsgBox CInt(False) ' returns 0
假设您可以将代码更改为:
ActiveCell.Offset(0, 0 - (r = 1)).Select
另外,我建议你阅读这篇文章:How to avoid using Select/Active statements