Home |
Search |
Today's Posts |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
popped an error until i did that. unable to set the hidden property of the range
class. here's what rng contains: ?rng.Address $6:$16,$18:$39,$41:$68,$70:$95,$97:$100,$102:$107, $109:$144,$146:$170 -- Gary "Bob Phillips" wrote in message ... Gary, That shouldn't have been necessary if you were adding whole rows to the range as you encountered the condition . -- HTH Bob (there's no email, no snail mail, but somewhere should be gmail in my addy) "Gary Keramidas" <GKeramidasATmsn.com wrote in message ... bob: seems to work fine, just had to fix this: If Not rng Is Nothing Then rng.EntireRow.Hidden = True -- Gary "Bob Phillips" wrote in message ... Why don't you build up a range of the rows as you find a match, and the hide the range at the end With ws For x = 5 To lastrow If cell_meets_condition Then If rng Is Nothing Then Set rng = Rows(x) Else Set rng = Union(rng, Rows(x)) End If End If Nex t If Not rng Is Nothing Then rng.Hidden = True End With or better, filter by your condition anhd delete visible rows. -- HTH Bob (there's no email, no snail mail, but somewhere should be gmail in my addy) "Gary Keramidas" <GKeramidasATmsn.com wrote in message ... that's not the problem, those are already off. -- Gary "Franz Erhart" wrote in message ... Switch off ScreenUpdating and AutoCalculation to make it much faster. I was able to hide 500 rows in no time - try it this way: Sub HideRows() Dim j As Integer Application.ScreenUpdating = False ' makes it much faster Application.Calculation = xlManual For j = 6 To 510 Worksheets("ListX").Range("A" & j).EntireRow.Hidden = True Next j Application.ScreenUpdating = True Application.Calculation = xlAutomatic End Sub "Gary Keramidas" wrote: i have to loop through some rows and test to see which rows to hide. if i hide the rows as i loop it takes 2 to 3 seconds to hide them. so i looked for a better way. as i loop, i create and array with a cell address of which rows i want to hide. the only problem is, if the string is more than 256 characters, it won't work: if this range contained more than 256 characters it wouldn't work range("A6,A9,A12,A15").entirerow.hidden = true so i wrote the code below and was wondering if there was a better way. this code runs instantaneously, as opposed to 2 or 3 seconds to loop and hide each row 1 at a time. it basically adds the cell address to a string until there are 50 address, then it hides 50 rows at a time and resets the array. then what's less than 50 at the end gets hidden when the loop exits. data starts at row 5: With ws For x = 5 To lastrow If .Range("G" & x).Value < 0 Or .Range("H" & x).Value < 0 _ Then 'do nothing Else ReDim Preserve arr(1 To x - 5) arr(x - 5) = .Range("A" & x).Address(0, 0) If cAddr = "" Then cAddr = arr(x - 5) Else cAddr = cAddr & "," & arr(x - 5) End If If UBound(arr) Mod 50 = 0 Then .Range(cAddr).EntireRow.Hidden = True cAddr = "" ReDim arr(1 To 1) End If End If Next ws.Range(cAddr).EntireRow.Hidden = True End With -- Gary |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Basic VBA question - hiding rows | Excel Discussion (Misc queries) | |||
Color alternate rows when after hiding selected rows | Excel Worksheet Functions | |||
Hiding Specific Rows Based on Values in Other Rows | Excel Worksheet Functions | |||
Hiding a button when hiding rows | Excel Discussion (Misc queries) | |||
hiding Rows and buttons/comboxes, over the rows | Excel Programming |