2012-11-12 76 views
2

我有一個宏,當任何單元格更改時運行,並且我只求和顯示的單元格,所以如果有人過濾工作表宏將運行並只求和可見單元格。運行宏每次過濾器是

我發現SpecialCells(xlCellTypeVisible)函數,但我無法設法使其工作。

我的代碼的想法是這樣的:

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim Rcells As Range 
    Dim sum as Double 
    sum = 0 
    For each Rcells In Range("A5:A65536").SpecialCells(xlCellTypeVisible) 
    sum = sum + Rcells.Value 
    Next Rcells 
    Sheets("aSheet").Range("B1").Value = sum 
End Sub 

我設法算了筆可見單元格,但它不會自動運行。

任何線索爲什麼不工作?感謝您的幫助提前。

+0

只是一個奇怪的問題,你真的有65536行數據? – CustomX

+6

這個'Dim i,fin As Integer'不會做你認爲的事! –

+0

好拿起JFC – brettdj

回答

2

兩個關鍵兩名來自我的文章Trapping a change to a filtered list with VBA,其中包括詳細的說明和樣本FLE步驟:

  1. 第二虛擬工作表加入單一SUBTOTALA1指回主片被濾波的範圍(即,範圍要捕獲在過濾器上)。
  2. Worksheet_Calculate()事件被添加到虛設工作表,如果SUBTOTAL公式更新,則在主工作表上更改過濾器時,將觸發此事件。
+0

首先,我是VBA中的一名假人,所以不要讓我認真。我不知道如果我不明白你的代碼是什麼,但是,我試過你的代碼,我不知道它是如何觸發「總和」,無論如何,我欣賞一切。 – themolestones

0

查看小計功能。進入=小計( 然後點擊FX,瞭解它是如何工作

+0

謝謝。現在問題是當我過濾時自動運行宏。 – themolestones

+0

爲什麼你不能使用公式? – Davesexcel