2016-08-05 5 views
1

Ich habe den folgenden Code:Excel läuft Makro auf aktuelles Blatt obwohl Code gibt sonst

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" 

Ziel das Makro acquire die Unter insgesamt eine Säule von meinem „gebucht“ Arbeitsblatt und Verwendung haben, ist, dass Nummer in Verbindung mit anderen Zahlen aus meinem aktuellen Blatt. Obwohl ich angegeben habe, dass das Makro die Untersumme aus dem Arbeitsblatt "Gebucht" findet, wird nur die Zwischensumme der "BookedCorCol" -Adresse auf meinem aktuellen Blatt gefunden. Jede Hilfe mit diesem würde sehr geschätzt werden

Antwort

1

Sie müssen Ihre Range vollständig qualifizieren. Sehen Sie die . (Punkte) vor dem Range-Objekt? Wenn Sie das nicht tun, dann wird der Bereich auf die beziehen ActiveSheet

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

Sie haben vergessen, die beiden Range Anrufe zu qualifizieren, die Sie auf die Teilsumme Funktion übergeben.

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

Arbeitete wie ein Charme, danke für die Antwort! –