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值转换为Boolean0将变为False ,其他所有值将变为True 。 当Visual BasicBoolean值转换为数字types时, False变为0True变为-1

您可以使用以下testing轻松检查:

 MsgBox CInt(True) ' returns -1 MsgBox CInt(False) ' returns 0 

假设您可以将您的代码更改为:

 ActiveCell.Offset(0, 0 - (r = 1)).Select 

另外我build议你阅读这篇文章: 如何避免使用Select / Active语句