2017-03-08 158 views
0

我想要创建一个宏,当它激活时,将隐藏没有格式化为特定颜色的单元格的所有列和行。我修改了仅包含内容的列的类似子集,但这是另一个额外的步骤,我的大脑似乎无法在今天上午左右。作为参考,这是我用来隐藏那些没有内容的所有列:Excel:隐藏不包含彩色单元格的所有行和列

Sub HideCols() 
Dim LC As Integer, j As Integer 
Dim LR As Integer, curCnt As Integer 
Dim k As Integer 
Dim Data As Variant 

Application.ScreenUpdating = False 

LC = Cells(3, Columns.Count).End(xlToLeft).Column 

For j = 3 To LC 
    LR = Cells(Rows.Count, j).End(xlUp).Row 
    curCnt = 0 
    Data = Range(Cells(1, 1), Cells(LR, LC)) 
    For k = 1 To LR 
     If Rows(k).Hidden = False And Data(k, j) <> "" Then _ 
     curCnt = curCnt + 1 
    Next k 
    Columns(j).Hidden = curCnt < 2 
Next j 

Application.ScreenUpdating = True 

End Sub 
+0

如果存在具有指定颜色的单元格,是否要隐藏它所在的行或列(或两者)? – BruceWayne

+0

我想不要隐藏它们,如果这是有道理的。我希望没有指定格式的任何内容被隐藏;但是,是的,行和列@BruceWayne –

+0

我刚刚记录了一个按颜色过滤的宏,并得到了:ActiveSheet.ListObjects(“Table1”)。Range.AutoFilter Field:= 5,Criteria1:= RGB(255,255,0 ),Operator:= xlFilterCellColor'也许你还可以记录一个宏,并轻松获得你想要的代码? – Ralph

回答

1

这里是如何隐藏的黑色单元的所有行和列。我相信你可以修改以适应你的需求。

Sub hide_cell() 

    Dim Rng As Range 
    Dim MyCell As Range 
    Set Rng = Range("A2:d10") 
    For Each MyCell In Rng 
     If MyCell.Interior.ColorIndex = 1 Then 
      MyCell.EntireRow.Hidden = True 
      MyCell.EntireColumn.Hidden = True 
     End If 
    Next MyCell 
End Sub 
相关问题