【发布时间】:2019-07-27 08:10:56
【问题描述】:
我需要找到 vendornumber 值以根据给定数据构造一个矩阵。我在下面写了代码(在 VBA 中)
(它有更多行用于矩阵构造,但我在这里剪掉了它们)
Public Sub tryout()
Dim vendornumber As Integer
Dim rownumber As Integer
rownumber = Worksheets("DISTANCE").Range("A2",
Worksheets("DISTANCE").Range("A2").End(xlDown)).Rows.Count
Dim y As Integer
Do Until (y = rownumber)
y = vendornumber * (vendornumber + 1)
vendornumber = vendornumber + 1
Loop
End Sub
代码运行良好,但我也想在其他模块中使用此值。我试图将变量公开为:
Public vendornumber As Integer
它给出了错误:子或函数中的属性无效。
然后,我把这一行放到子外面,它给出了错误:溢出,并指出下面的代码部分作为原因:
y = vendornumber * (vendornumber + 1)
【问题讨论】:
-
公共行必须在子行之前(在程序的顶部)。
-
如果您希望
vendornumber公开,请将Dim vendornumber as Integer移到子外部。 -
您是否尝试使用
rownumber来查找最后一行?如果是这样,将rownumber as Integer更改为rownumber as Long并在A 列中找到最后一行数据rownumber = worksheet("DISTANCE").Cells("DISTANCE").Rows.Count,"A2").End(xlUp).Row -
Integer是 16 位有符号整数类型,最大值为 32,767。当您尝试为其分配大于或等于 32,768 的值时,将引发溢出错误。声明y As Long(一个 32 位有符号整数类型)应该可以修复它。经验法则,你永远不需要声明任何东西As Integer。