返回列表 上一主題 發帖

[已解決]自動篩選問題

[已解決]自動篩選問題

本帖最後由 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' 找不到所要找的儲存格

請問各位大大要怎麼解決這個問題呢?
50 字節以內
不支持自定義 Discuz! 代碼

本帖最後由 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

TOP

Set Rng = Rng.Offset(1, 0).SpecialCells(xlCellTypeVisible)
學海無涯_不恥下問

TOP

感謝luhpro Hsieh兩位大大的解答,
趕快來去試看看
50 字節以內
不支持自定義 Discuz! 代碼

TOP

感謝兩位大大,已經解決了,謝謝!!
50 字節以內
不支持自定義 Discuz! 代碼

TOP

請問Hsieh大大,小弟有一個疑問請教,
為什麼把Resize拿掉就不會當掉了呢??
50 字節以內
不支持自定義 Discuz! 代碼

TOP

        靜思自在 : 不怕事多,只怕多事。
返回列表 上一主題