2015-10-16 20 views
2

我正試圖編寫一個VBA函數來獲取一個函數(「彙總」)來更新選定工作表時範圍的值。選擇工作表時的函數

我已經此重複,以用於特定片碼的不同片材,但我迷路至於如何創建單個功能,將採取與範圍名稱SHEETNAME(例如,「rngXF」)並將該值在彙總函數(如「XF」)

Private Sub Worksheet_Activate() 
Dim c As Range 
Application.Calculation = xlCalculationManual 
Application.ScreenUpdating = False 

For Each c In Range("rngXF") 
    c.Value = Rollup(c, "XF") 
Next c 

Application.Calculation = xlCalculationAutomatic 
Application.Calculate 
Application.ScreenUpdating = True 
End Sub 
+1

只是一個想法,創建一個參數爲sheetname和範圍,然後觸發它使用激活並將值傳遞給子實際做 –

+0

1)此功能「彙總」已實施? 2)你可以創建一個帶有如下輸入參數的子文件:(Sub Test(ByVal param1 as Integer,ByVal param2 as String))。 –

+0

@MarcoGetrost是 - 它將包含'x'的圖紙名稱的其他圖紙上的特定單元格的值相加。子將放置在哪裏? – CrazyIvan99

回答

0

你可以把這個要彙總到任何工作表模塊中:

Private Sub Worksheet_Activate() 
    Call Calculate_RollUp(Me, "rngXF", "XF") 
End Sub 

,並把這個在常規模塊:

Public Sub Calculate_RollUp(SheetObject As Worksheet, Range_Name As String, RollUp_Argument As String) 
Dim c As Range 
With Application 
    .EnableEvents = False 
    .Calculation = xlCalculationManual 
    .ScreenUpdating = False 

    For Each c In SheetObject.Range(Range_Name) 
     c.Value = Rollup(c, RollUp_Argument) 
    Next c 


    .Calculation = xlCalculationAutomatic 
    .Calculate 
    .EnableEvents = True 
    .ScreenUpdating = True 
End With 
End Sub 
+0

得到這個工作 - 歡呼聲。 – CrazyIvan99