2017-08-24 77 views
0

我試圖在模塊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')。學習將參數傳遞給您的過程。 –

回答

2

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