variables里面的.Offset方法
我已经注意到在offset方法中使用variables的一些奇怪的行为。
这是我的代码
Dim r As Integer r=1 ActiveCell.Offset(0, 1).Select ActiveCell.Offset(0, 0 + (r = 1)).Select
第一个select似乎按预期工作,它select单元格右边的一列。 但是,第二个实际上select了单元格的一列到左边! 这似乎意味着0 + (r =1)
正在评估为-1,这看起来很奇怪。
有什么我失踪?
这里是MSDN的引用:
当
Visual Basic
将数字数据types值转换为Boolean
,0
将变为False
,其他所有值将变为True
。 当Visual Basic
将Boolean
值转换为数字types时,False
变为0
,True
变为-1
。
您可以使用以下testing轻松检查:
MsgBox CInt(True) ' returns -1 MsgBox CInt(False) ' returns 0
假设您可以将您的代码更改为:
ActiveCell.Offset(0, 0 - (r = 1)).Select
另外我build议你阅读这篇文章: 如何避免使用Select / Active语句