里面的变量.Offset方法

时间:2014-04-22 15:51:49

标签: excel excel-vba vba

我注意到在偏移方法中使用变量的一些奇怪的行为。

这是我的代码

Dim r As Integer 
r=1
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, 0 + (r = 1)).Select

第一个选择似乎按预期工作,它选择右侧一列的单元格。 但是,第二个实际上选择了一列到左边的单元格!这似乎意味着0 + (r =1)正在评估-1,这似乎很奇怪。

我有什么遗失的吗?

1 个答案:

答案 0 :(得分:2)

以下是MSDN的引用:

  

Visual Basic将数字数据类型值转换为Boolean时,0变为False,所有其他值变为True。当Visual BasicBoolean值转换为数字类型时,False变为0True变为-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