2016-08-05 2 views
1

를 지정하더라도 나는 다음과 같은 코드를 가지고 :엑셀 실행 매크로 코드는 그렇지

목표는 내 "예약"워크 시트 사용에서 컬럼의 서브 총 매크로 획득을하는 것입니다
Sheets("Booked").Range("$A$1:$H$379").AutoFilter Field:=8, Criteria1:= _ 
     ">=" & StartDat 
Sheets("Booked").Range("$A$1:$H$379").AutoFilter Field:=9, Criteria1:= _ 
     "<=" & EndDat 
CorBookCol = Worksheets("Booked").Cells.Find("Booked Impressions").Address 

BookAnswer = Worksheets("Booked").Application.WorksheetFunction.Subtotal(9, Range(CorBookCol, Range(CorBookCol).End(xlDown))) 
MsgBox (BookAnswer) 
Debug.Print "------------------" 
Debug.Print BookAnswer & " - Booked Answer" 

그 내 현재 시트의 다른 번호와 함께 번호. 그러나 매크로가 "예약 된"워크 시트에서 하위 합계를 찾도록 지정 했더라도 현재 시트의 "BookedCorCol"주소 부분합 만 찾습니다. 이것에 대한 도움이 크게 평가 될 것입니다.

답변

1

범위를 완전히 인증해야합니다. Range 객체 앞에 . (점)이 보이나요? 당신이 그하지 않으면 범위는 당신이 부분합 함수에 전달할 두 Range 호출을 한정 잊어 ActiveSheet

With Worksheets("Booked") 
    BookAnswer = .Application.WorksheetFunction.Subtotal(9, _ 
       .Range(CorBookCol, .Range(CorBookCol).End(xlDown))) 
End With 
1

를 참조합니다.

With Sheets("Booked") 
    .Range("$A$1:$H$379").AutoFilter Field:=8, Criteria1:=">=" & StartDat 
    .Range("$A$1:$H$379").AutoFilter Field:=9, Criteria1:="<=" & EndDat 
    CorBookCol = .Cells.Find("Booked Impressions").Address 

    BookAnswer = Application.WorksheetFunction.Subtotal(9, .Range(CorBookCol, .Range(CorBookCol).End(xlDown))) 
End With 
MsgBox (BookAnswer) 
Debug.Print "------------------" 
Debug.Print BookAnswer & " - Booked Answer" 
+0

매력처럼 작동했습니다. –