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

时间:2013-12-06 13:35:23

标签: excel vba overflow offset

我知道这里已经回答了类似的问题:

What is the maximum value for row and column Range offset in VBA/Excel?

但是,该错误似乎与Excel 2003中工作表中的行数有关。由于我运行的是Excel 2010(包含65,536行),因此我认为我的错误与我的工作表大小无关。 / p>

以下代码行给出了运行时错误'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,表示Integer数据类型问题。行偏移是否仅限于整数数据类型?如果是这样,有没有办法将该限制更改为Long(或其他数据类型)?

感谢您提供的任何帮助!

威尔

3 个答案:

答案 0 :(得分:2)

不要使用整数:它们是16位有符号值;它们的范围是-32768到32767.这就是你得到溢出的原因。

请改用Long。

答案 1 :(得分:0)

Range.Offset方法不限于整数。

  

偏移量有两个参数,均为变体

  • RowOffset 可选变体
  • ColumnOffset 可选变体

Variant中的数字数据:

  

通常,数字Variant数据保留在其原始数据中   在Variant中输入。例如,如果您将一个Integer分配给   变体,后续操作将Variant视为整数。   但是,如果对Variant执行算术运算   包含字节,整数,长整数或单个,以及结果   超过原始数据类型的正常范围,结果是   在Variant中提升为下一个更大的数据类型。一个字节是   升级为Integer,Integer升级为Long,Long   并且Single被提升为Double。 Variant时发生错误   包含Currency,Decimal和Double值的变量超出它们的值   各自的范围。

答案 2 :(得分:0)

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

Range将可选变量作为参数,如果输入的是数据,则保留数值数据。

要将数字转换为长数字,只需将其包裹在CLng(yournumber)中,或者如果您的数字变大,则将其转换为CDbl(yournum)的双精度数。