Board logo

標題: [已解決]自動篩選問題 [打印本頁]

作者: like_azure    時間: 2011-6-8 17:00     標題: [已解決]自動篩選問題

本帖最後由 like_azure 於 2011-6-13 11:53 編輯
  1. '本程序自動篩選顧客名稱為BOTTM, 人員代號為3的資料錄
  2. Sub vbaAFilter()
  3. Dim Rng As Range        '自動篩選結果範圍
  4. Dim theRow As Range     '各區域的資料列
  5. Dim theArea As Range        '各區域範圍
  6.     With Sheets("Orders")       '在Orders工作表中
  7.         Set Rng = .UsedRange    '所有資料範圍
  8.         Rng.AutoFilter Field:=2, Criteria1:="BOTTM"     '篩選出顧客為BOTTOM者
  9.         Rng.AutoFilter Field:=3, Criteria1:="3"         '再篩選出員工代號為3者
  10.         '設定篩選結果範圍
  11.         Set Rng = Rng.Resize(Rng.Rows.Count - 1).Offset(1, 0).SpecialCells(xlCellTypeVisible)
  12.     End With
  13.     '遍歷篩選結果範圍各AREA
  14.     For Each theArea In Rng.Areas
  15.         '遍歷各AREA的各列
  16.         For Each theRow In theArea.Rows
  17.             theRow.Select       '選定此列
  18.             MsgBox theRow.Address       '顯示此列的位址
  19.         Next
  20.     Next
  21.     Rng.AutoFilter          '解除自動篩選狀態
  22. End Sub
複製代碼
請問各位大大,上面程式碼是參考crdotlin大大的範例(http://blog.xuite.net/crdotlin/excel/11049893),
小弟在運用的時候,卻遇到如果沒有符合篩選條件的時候
就會在Set Rng = Rng.Resize(Rng.Rows.Count - 1).Offset(1, 0).SpecialCells(xlCellTypeVisible)這行當掉,
錯誤訊息:執行階段錯誤'1004' 找不到所要找的儲存格

請問各位大大要怎麼解決這個問題呢?
作者: luhpro    時間: 2011-6-8 22:12

本帖最後由 luhpro 於 2011-6-8 22:19 編輯

回復 1# like_azure
Sub vbaAFilter()
.
.
.
On Error GoTo Skip
    With Sheets("Orders")       '在Orders工作表中
.
.
.
    End With
    For Each theArea In Rng.Areas
.
.
.
    Next
   
Skip:
    Rng.AutoFilter          '解除自動篩選狀態
   On Error GoTo 0
End Sub
作者: Hsieh    時間: 2011-6-8 23:42

Set Rng = Rng.Offset(1, 0).SpecialCells(xlCellTypeVisible)
作者: like_azure    時間: 2011-6-9 11:16

感謝luhpro Hsieh兩位大大的解答,
趕快來去試看看
作者: like_azure    時間: 2011-6-10 14:29

感謝兩位大大,已經解決了,謝謝!!
作者: like_azure    時間: 2011-6-17 17:06

請問Hsieh大大,小弟有一個疑問請教,
為什麼把Resize拿掉就不會當掉了呢??




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)