【问题标题】:How to make the variable public in VBA?如何在 VBA 中公开变量?
【发布时间】: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

标签: excel vba public


【解决方案1】:

你需要在外面声明变量。

Public vendornumber As Integer

Public Sub tryout()
   vendornumber = 1

【讨论】:

  • 虽然如果变量是在对象模块(Sheet、类等)中声明的,则需要“通过”对象来访问它。例如,如果在“ThisWorkbook”模块中声明了一个变量(TestVar),它将通过ThisWorkbook.TestVar 访问
猜你喜欢
  • 2017-07-19
  • 2015-10-27
相关资源
最近更新 更多