在模块中声明一个公共变量
问题描述:
我试图在模块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
答
模块1
Public LastRow As Long
Public ws As Worksheet
Sub CreateVariable()
Set ws = Worksheets("Variance")
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
End Sub
Sub CallOthers()
Call CreateVariable
Call AddFormula
End Sub
或作为@ Mat'sMug所述通作为变量
模块1
Sub CallOthers()
Dim LastRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Variance")
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Call AddFormula(ws,LastRow)
End Sub
模块2
Sub AddFormula(ws As Worksheet, LastRow As Long)
ws.Range("D2:D" & LastRow).FormulaR1C1 = "=RC[-2]-RC[1]"
End Sub
放'公共LASTROW作为Long'所有方式在模块的顶部,任何潜艇 – jsotola
前如果你不想在你的AddFormula子目录中重新声明和设置,你还需要传递ws作为全局变量。 –
非常糟糕的主意。如果你的意思是从一个地方*写*到LastRow,不要将它暴露为这样的全局变量(考虑一个'Public Property Get'成员返回它,并保留'LastRow'' Private')。学习将参数传递给您的过程。 –