Excel 2010中VBA的行和列偏移的最大值是多less?

我知道类似的问题已经在这里得到解答:

在VBA / Excel中,行和列的偏移量的最大值是多less?

但是,该错误似乎与Excel 2003中的工作表中的行数有关。由于我正在运行Excel 2010(具有65,536行),因此我不认为我的错误与我的工作表大小有关。

这是给我的代码行运行时错误'6'溢出:

Range("OutputStart").Offset(1 + (iCounter1 - 1) * iDataPoints * 26 + iCounter2 * iDataPoints, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True 

iCounter1是一个整数,它的值是13 iDataPoints是一个整数,它的值是103 icounter2是一个整数,它的值是7

行偏移计算的结果是32,858,这表示整数数据types问题。 行偏移是否限于整数数据types? 如果是这样,是否有任何方法将该限制更改为Long(或其他数据types)?

感谢您的任何帮助,您可以提供!

不要使用Integer: 它们是16位有符号值 ; 他们的范围是-32768到32767.这就是为什么你得到溢出。

使用一个长而不是。

Range.Offset方法不限于整数。

偏移量有两个参数都是Varianttypes

  • RowOffset可选Variant
  • ColumnOffset可选Variant

变体中的数字数据:

通常情况下,Variant中的数据Variant数据保持其原始数据types。 例如,如果将一个整数赋值给一个variables,后续操作将该variables视为一个整数。 但是,如果在包含Byte,Integer,Long或Single的Variant上执行算术运算,并且结果超出了原始数据types的正常范围,则在Variant中将结果提升到下一个更大的数据types。 一个字节被提升为一个整数,一个整数被提升为一个Long,一个Long和一个提升为Double。 包含“货币”,“十进制”和“双精度值”的variablesvariables超出其各自的范围时发生错误。

VB中的整数是16位。 使用unsigned int; 或者更理想,一个长。

范围将可选的变体作为参数,并且数字数据将被保存,如果这是馈送到它的。

要将一个数字作为一个长CLng(yournumber) ,只需将其包装在CLng(yournumber) ,或者如果您的数字变大,则使用CDbl(yournum)作为双CDbl(yournum)