我有一個問題,這個宏不會從一個作業表回圈到另一個作業表,想法是在沒有三個指定作業表的所有作業表的 A 列中隱藏所有不包含“X”的行,如果有人可以幫助我。
Option Explicit
Sub test()
Dim ws As Worksheet
Dim C As Range
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "übersicht" Or ws.Name <> "Definitionen" Or ws.Name <> "Abkürzungen" Then
For Each C In Range("A6:A2000").Cells
If C.Value = "" Then
C.EntireRow.Hidden = True
Else
C.EntireRow.Hidden = False
End If
Next C
Else
End If
Next ws
End Sub
uj5u.com熱心網友回復:
使用自動篩選隱藏空白行
Option Explicit
Sub HideBlankRows()
Const wsNamesNoList As String = "übersicht,Definitionen,Abkürzungen"
Dim wsNamesNo() As String: wsNamesNo = Split(wsNamesNoList, ",")
Dim ws As Worksheet
Dim drg As Range ' Data Range (no headers)
Dim vrg As Range ' Visible (Data) Range
For Each ws In ThisWorkbook.Worksheets
If IsError(Application.Match(ws.Name, wsNamesNo, 0)) Then
If ws.AutoFilterMode Then ws.AutoFilterMode = False
With ws.Range("A5:A2000") ' 5 is the header row
.EntireRow.Hidden = False
Set drg = .Resize(.Rows.Count - 1).Offset(1)
.AutoFilter 1, "="
On Error Resume Next
Set vrg = drg.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
End With
ws.AutoFilterMode = False
If Not vrg Is Nothing Then
vrg.EntireRow.Hidden = True
Set vrg = Nothing
End If
End If
Next ws
MsgBox "Blank rows hidden.", vbInformation
End Sub
uj5u.com熱心網友回復:
(a)您需要指定作業表:
For Each C In ws.Range("A6:A2000")
(b)當您檢查作業表名稱時,您的 If 條件錯誤,您需要將其更改Or為And,否則它將始終為 True 并且您將處理所有作業表。
(c)你的代碼可能會很慢。將所有行設定為可見,收集要隱藏在 Range 變數中的行(使用Union),然后一次性將所有行設定為隱藏。
您還可以通過檢查每個作業表正在使用的行來優化您的代碼,并且只處理這些行
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/435206.html
上一篇:如果在單元格上找到特定值,則洗掉范圍內的所有單元格-VBA
下一篇:從表1和表2匹配或查找值
