【发布时间】:2018-02-02 20:23:24
【问题描述】:
我正在尝试在模块 1 中建立一个变量LastRow,它可以在其他子模块和模块中使用。以下是我实际工作簿中内容的简化版本。
- 一个潜艇呼叫其他人,
- 一个子创建一个公共变量,
- 另一个模块中的另一个子,其公式依赖于Sub CreateVariable 中的变量。
我已经在这里得到了很多帮助,从我在网上阅读的内容来看,声明一个公共变量应该非常简单......但我没有得到它。任何人都可以帮忙吗?提前致谢!
模块 1
Sub CallOthers()
Call CreateVariable
Call AddFormula
End Sub
模块 1
Public LastRow As Long
Sub CreateVariable()
Dim ws As Worksheet
Set ws = Worksheets("Variance")
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
End Sub
模块 2
Sub AddFormula()
ws.Range("D2:D" & LastRow).FormulaR1C1 = "=RC[-2]-RC[1]"
End Sub
【问题讨论】:
-
把
Public LastRow As Long一直放在模块的顶部,在任何 subs 之前 -
如果您不打算在
AddFormula子中重新声明和设置,您还需要将 ws 作为全局变量传递。 -
非常糟糕的主意。如果你的意思是从一个地方写到
LastRow,不要把它暴露为这样的全局变量(考虑一个返回它的Public Property Get成员,并保留LastRowPrivate)。学习将参数传递给您的过程。