Hide Rows and Columns code revision - xlCellTypeBlanks changed to formuala result ""

PhilW_34

Board Regular
Joined
Jan 4, 2007
Messages
128
Hello,

I'm updating a file I've used for a long time. In this file, I'd manually enter data in cells A5:A16. If I only entered in one cell in that range, the rest were blank. However, I've decided to upgrade the file and now I'm using formulas to populate data in A5=A16. My .specialCells(xlCellTypeBlanks) is no longer working on the cells that only look blank because the formula result is "". Other code below hides corresponding rows below my original range. I still need to do that.

Ultimately, how can I revise xlCellTypeBlanks to something like = ""? THanks.

Phil

Code:
Sub Hide_Rows()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

 With ActiveSheet 
        On Error Resume Next
        Set rngRowsToHide = .Range("A5:A16").SpecialCells(xlCellTypeBlanks)  '<- Need to fix this to make it work right again.
        Set rngColsToHide = .Range("F4:X4").SpecialCells(xlCellTypeBlanks)      '<- Need to fix this to make it work right again.

        
        On Error GoTo 0
    End With
    
    If Not rngRowsToHide Is Nothing Then
        Set rngRowsToHide = Union(rngRowsToHide, _
                                rngRowsToHide.Offset(23), _
                                rngRowsToHide.Offset(39), _
                                rngRowsToHide.Offset(55), _
                                rngRowsToHide.Offset(71))
 
        rngRowsToHide.EntireRow.Hidden = True
    End If
    On Error Resume Next
    If Not rngColsToHide Is Nothing Then
        Set rngColsToHide = Union(rngColsToHide, _
                                rngColsToHide.Offset(0, 24))
        rngColsToHide.EntireColumn.Hidden = True
    End If
    Columns("Z:AF").EntireColumn.Hidden = False
    On Error Resume Next

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub
 

Some videos you may like

Excel Facts

How to create a cell-sized chart?
Tiny charts, called Sparklines, were added to Excel 2010. Look for Sparklines on the Insert tab.

Fluff

MrExcel MVP, Moderator
Joined
Jun 12, 2014
Messages
42,835
Office Version
365
Platform
Windows
You will need to loop through the ranges like
Code:
   For Each Cl In .Range("A5:A16")
      If Cl.Value = "" Then
         If rngRowsToHide Is Nothing Then Set rngRowsToHide = Cl Else Set rngRowsToHide = Union(rngRowsToHide, Cl)
      End If
   Next Cl
   For Each Cl In .Range("F4:X4")
      If Cl.Value = "" Then
         If rngColsToHide Is Nothing Then Set rngColsToHide = Cl Else Set rngColsToHide = Union(rngColsToHide, Cl)
      End If
   Next Cl
 

PhilW_34

Board Regular
Joined
Jan 4, 2007
Messages
128
Thanks Fluff. I ticked out my code and tried running this. I'm getting an error on "If rngRowsToHide Is Nothing Then"

Rich (BB code):
Sub Hide_Rows()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

 With ActiveSheet 
 '   On Error Resume Next
        For Each Cl In .Range("A5:A16")
            If Cl.Value = "" Then
'Runtime error 424 here ->  If rngRowsToHide Is Nothing Then Set rngRowsToHide = Cl Else Set rngRowsToHide = Union(rngRowsToHide, Cl)
                End If
        Next Cl
        For Each Cl In .Range("F4:X4")
            If Cl.Value = "" Then
            If rngColsToHide Is Nothing Then Set rngColsToHide = Cl Else Set rngColsToHide = Union(rngColsToHide, Cl)
                End If
        Next Cl
        
 '       Set rngRowsToHide = .Range("A5:A16").SpecialCells(xlCellTypeBlanks)
'        'Set rngColsToHide = .Range("F4:X4").SpecialCells(xlCellTypeBlanks)

        
'        On Error GoTo 0
End With
    

'    If Not rngRowsToHide Is Nothing Then
'        Set rngRowsToHide = Union(rngRowsToHide, _
                                rngRowsToHide.Offset(23), _
                                rngRowsToHide.Offset(39), _
                                rngRowsToHide.Offset(55), _
                                rngRowsToHide.Offset(71))
 
'        rngRowsToHide.EntireRow.Hidden = True
'    End If
'    On Error Resume Next
'    If Not rngColsToHide Is Nothing Then
'        Set rngColsToHide = Union(rngColsToHide, _
                                rngColsToHide.Offset(0, 24))
'        rngColsToHide.EntireColumn.Hidden = True
'    End If
'    Columns("Z:AF").EntireColumn.Hidden = False
'    On Error Resume Next
    ActiveSheet.Range("$A$90:$C$306").AutoFilter Field:=2, Criteria1:="<>"
    Range("B17").Select
Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub
 

Fluff

MrExcel MVP, Moderator
Joined
Jun 12, 2014
Messages
42,835
Office Version
365
Platform
Windows
Try declaring the variables
Code:
Dim rngRowsToHide As Range, rngColsToHide As Range, Cl As Range
 

PhilW_34

Board Regular
Joined
Jan 4, 2007
Messages
128
Thanks again Fluff.

That took care of the runtime error. However, when I run the code, the screen just blinks and no rows or columns hide. Hmmm...

Thanks,

Phil
 

Fluff

MrExcel MVP, Moderator
Joined
Jun 12, 2014
Messages
42,835
Office Version
365
Platform
Windows
That code was just to replace this
Code:
        Set rngRowsToHide = .Range("A5:A16").SpecialCells(xlCellTypeBlanks)  '<- Need to fix this to make it work right again.
        Set rngColsToHide = .Range("F4:X4").SpecialCells(xlCellTypeBlanks)      '<- Need to fix this to make it work right again.
 

PhilW_34

Board Regular
Joined
Jan 4, 2007
Messages
128
Hi Fluff,

And...Now you're my hero. Kicking tail and taking names on a Saturday. Many thanks! I was too smart for my own good. Once I removed the ticks from the rest of the code, it worked perfectly. Thanks again.

Phil
 

Fluff

MrExcel MVP, Moderator
Joined
Jun 12, 2014
Messages
42,835
Office Version
365
Platform
Windows
You're welcome & thanks for the feedback
 

Watch MrExcel Video

Forum statistics

Threads
1,102,660
Messages
5,488,159
Members
407,628
Latest member
Faceless Judge

This Week's Hot Topics

  • Timer in VBA - Stop, Start, Pause and Reset
    [CODE=vba][/CODE] Option Explicit Dim CmdStop As Boolean Dim Paused As Boolean Dim Start Dim TimerValue As Date Dim pausedTime As Date Sub...
  • how to updates multiple rows in muliselect listbox
    Hello everyone. I need help with below code. code is only chaning 1st row in mulitiselect list box. i know issue with code...
  • Delete Row from Table
    I am trying to delete a row from a table using VBA using a named range to find what I need to delete. My Range is finding the right cell. In the...
  • Assigning to a variable
    I have a for each block where I want to assign the value in column 5 of the found row to the variable Serv. [CODE=vba] For Each ws In...
  • Way to verify information
    Hi All, I don't know what to call this formula, and therefore can't search. I have a spreadsheet with information I want to reference...
  • Active Cell Address – Inactive Sheet
    How to use VBA to get the cell address of the active cell in an inactive worksheet and then place that cell address in a location on the current...
Top