2014-07-11 69 views
0

我有一個調度excel宏,將每月的每日列表作爲單獨的excel工作表。在我的宏觀中,「星期日」表總計每名員工的每小時工作時間,並給我每週的總時數。我試圖創建一個函數,使我可以選擇我需要的上下範圍內的紙張,但是我無法使其工作。什麼是問題?目前,我有:調用VBA函數

Function SampleSum(ByVal ZZ As Integer, ByVal XX As Integer) As Integer 
Application.Volatile 
SampleSum = Sheets(ZZ).Range("BA5") + Sheets(XX).Range("BA5") 
Sheets(XX).Range("BB5") = SampleSum 
End Function 

我希望能夠「呼叫」功能以2個任意數量或變量服用ZZ & XX的地方。

+0

功能... – Nicolai

+1

從工作表中可以叫** **只返回一個值的函數的數到呼叫小區。您不能使用UDF來操作其他範圍/單元格。 –

+1

請參閱[本文](http://stackoverflow.com/questions/23433096/using-a-udf-in-excel-to-update-the-worksheet)以獲得解釋和可能的解決方法。否則,你必須將其作爲子程序來完成。 –

回答

1

首先,因爲你宣佈你的應用程序「善變」,從那裏我不會編程編輯您的工作表,因爲它可以在一個循環中去: http://msdn.microsoft.com/en-us/library/office/ff195441%28v=office.15%29.aspx 其次,函數返回的東西。一個子程序不會。如果你只需要在單元格中寫入,我會推薦使用子程序。

Function SampleSum(ByVal ZZ As Integer, ByVal XX As Integer) As Integer 
    Application.Volatile 
    SampleSum = Sheets(ZZ).Range("BA5") + Sheets(XX).Range("BA5") 
End Function 

Sub Main() 
    Sheets(XX).Range("BB5") = SampleSum(ZZ, XX) 
End Sub 

ZZ和XX在「主」子可以是你的選擇,你所描述的工作

+0

我的歉意,這只是一個示例函數,我試圖找到一個工作。在原來的子代碼是總和= 0 '對於= 5〜97 ' 總和= 0 '對於G =(C - 7)至c ' 總和=總和+表(克).Cells(一, 53) 'wbMain.Worksheets(c).Cells(a,54)= sum 'Next g 'Next a。我需要作爲一個函數,將採取我選擇的2張索引,而不是重複這個代碼。我無法讓它作爲一個功能工作。如果我在宏運行後更新任何每日總數,上面的示例函數不會更新每週總數。我認爲Application.Volatile將修復該問題 – Stove

+0

您是否嘗試過使用「在工作表更改」事件? – Noldor130884

+0

我不認爲我曾聽說過。這是如何運作的? – Stove