在模块中声明一个公共变量

在模块中声明一个公共变量

问题描述:

我试图在模块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 
+0

放'公共LASTROW作为Long'所有方式在模块的顶部,任何潜艇 – jsotola

+0

前如果你不想在你的AddFormula子目录中重新声明和设置,你还需要传递ws作为全局变量。 –

+1

非常糟糕的主意。如果你的意思是从一个地方*写*到LastRow,不要将它暴露为这样的全局变量(考虑一个'Public Property Get'成员返回它,并保留'LastRow'' Private')。学习将参数传递给您的过程。 –

模块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