2014-07-11 2 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 

싶습니다 어떤 두 수 또는 변수가 ZZ & XX의 자리를 복용하는 기능을 "호출"할 수 있도록. 모든

+0

기능 ... ** 만 ** 값을 반환 할 수 워크 시트에서 호출 – Nicolai

+1

함수의 숫자가 될 수 호출하는 셀에. UDF를 사용하여 다른 범위/셀을 조작 할 수 없습니다. –

+1

설명 및 가능한 해결 방법은 [this post] (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

내 사과, 그건 그냥 주변 샘플을 찾아 내려고 노력한 샘플 함수였습니다. 원래 서브에서 코드는 sum = 0 'a = 5에서'sum = 0 'g = (c - 7)에서 c 'sum = sum + Sheets (g). 셀 (a, 53) 'wbMain.Worksheets (c) .Cells (a, 54) = sum '다음 g '다음 a. 나는이 코드를 반복하는 대신에 내가 선택한 두 개의 시트 인덱스를 취할 함수로 필요하다. 나는 그것이 기능으로 작동하도록 할 수 없습니다. 그리고 매크로가 실행 된 후 일일 합계를 업데이트하면 위의 샘플 함수는 주간 합계를 업데이트하지 않습니다. 나는 Application.Volatile가 그것을 고칠 것이라고 생각했다. – Stove

+0

"워크 시트 변경시"이벤트를 사용해 보셨습니까? – Noldor130884

+0

나는 그것에 대해 들어 본 적이 없다고 생각합니다. 어떻게 작동합니까? – Stove