code_junkie

Excel VBA hide/show row code speed

Nov 12th, 2011
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. Sub SetRowVisibility1()
  2.  
  3. Dim rowsToCheck As Range
  4. With ActiveSheet
  5. Set rowsToCheck = .Range(Range("B7"), Range("B7").End(xlDown))
  6. End With
  7.  
  8. Dim needToShow As Range, needToShow_Showing As Range
  9. Dim needToHide As Range, needToHide_Showing As Range
  10.  
  11. Set needToShow = rowsToCheck.SpecialCells(xlCellTypeFormulas, xlNumbers)
  12. Set needToHide = rowsToCheck.SpecialCells(xlCellTypeFormulas, xlErrors)
  13.  
  14. On Error Resume Next
  15. Set needToShow_Showing = needToShow.Offset(0, 1).SpecialCells(xlCellTypeVisible)
  16. Set needToHide_Showing = needToHide.Offset(0, 1).SpecialCells(xlCellTypeVisible)
  17. On Error GoTo 0
  18.  
  19. If Not needToHide_Showing Is Nothing Then
  20. needToHide_Showing.EntireRow.Hidden = True
  21. End If
  22. If Not needToShow Is Nothing Then
  23. If needToShow.Count <> needToShow_Showing.Count Then
  24. needToShow.EntireRow.Hidden = False
  25. End If
  26. End If
  27.  
  28. End Sub
  29.  
  30.  
  31. Sub SetRowVisibility2()
  32.  
  33. Dim rowsToCheck As Range
  34. With ActiveSheet
  35. Set rowsToCheck = .Range(Range("B7"), Range("B7").End(xlDown))
  36. End With
  37.  
  38. Dim needToShow As Range, needToHide As Range
  39. Dim cell As Range
  40. For Each cell In rowsToCheck
  41.  
  42. If IsError(cell.Value) And (cell.EntireRow.Hidden = False) Then
  43. If needToHide Is Nothing Then
  44. Set needToHide = cell
  45. Else
  46. Set needToHide = Union(needToHide, cell)
  47. End If
  48. End If
  49.  
  50. If Not IsError(cell.Value) And (cell.EntireRow.Hidden = True) Then
  51. If needToShow Is Nothing Then
  52. Set needToShow = cell
  53. Else
  54. Set needToShow = Union(needToShow, cell)
  55. End If
  56. End If
  57.  
  58. Next cell
  59.  
  60.  
  61. If Not needToHide Is Nothing Then needToHide.EntireRow.Hidden = True
  62. If Not needToShow Is Nothing Then needToShow.EntireRow.Hidden = False
  63.  
  64. End Sub
Add Comment
Please, Sign In to add comment