View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
Neal Zimm Neal Zimm is offline
external usenet poster
 
Posts: 345
Default Hidden Property 1004 Error, Union of Rows

Sorry Joel, I should have told you or modified the code I listed your
answer

from
Set RowsRng = Application.Union(.Rows(FromRow & Colon & ToRow), _
RowsRng)
to
Set RowsRng = Application.Union(.Rows(FromRow & ":" & ToRow), _
RowsRng)

Colon is a public constant and is indeed valued at ":"
I have about 10 public constants for punctuation as I have a bad pinky
finger and cannot type the ' or " characters easily.

Please note that my sample code says RowsRng is being 'properly' formed,
it's the .hidden property of it that's the problem.

Please re-read my proof of the problem .
Thanks,
Neal



--

Neal Z


"joel" wrote:

from
Set RowsRng = Application.Union(.Rows(FromRow & Colon & ToRow), _
RowsRng)
to
Set RowsRng = Application.Union(.Rows(FromRow & ":" & ToRow), _
RowsRng)


"Neal Zimm" wrote:

Hi All,
Am getting the 1004 unable to .. hidden property run time error.
I think I've proved it resulted from a union of rows as
shown in the code below.

I'm gonna use the workaround after cleaning up the code
but the broader question is are there other suspect
properties concerning a range resulting from a union ?

It's a morale buster.

Would appreciate comments on best way to proceed.

Thanks,
Neal Z.



Function PPDtEndRng_GetF(WkTimeWs As Worksheet, _
optional bThisMacHides as Boolean = False, ..more args) as Range

' more code not shown

With WkTimeWs
' PPsRowsHideSM constant is "26:26"
Set RowsRng = .Rows(PPsRowsHideSM)

'more code

' Line below is the 'bad' one
Set RowsRng = Application.Union(.Rows(FromRow & Colon & ToRow), _
RowsRng)

End With

If bThisMacHides Then GoSub HideRows

'more code

Exit Function


HideRows: 'Events, protection, and hide.

Dim bSave As Boolean, DebugRng As Range

Application.EnableEvents = False

With WkTimeWs 'debug code
bSave = .ProtectContents
ToRow = 26
If Not .Rows(FromRow & Colon & ToRow).Hidden Then MsgBox "not hidden"
' Yes
Set DebugRng = .Rows(FromRow & Colon & ToRow) 'equivalent of RowsRng
End With

MsgBox RowsRng.Address & " " & DebugRng.Address 'both $24:$26 no 1004 error

On Error Resume Next
MsgBox DebugRng.Hidden 'False as expected
MsgBox Err, , "DebugRng.Hidden": Err = 0 'OK no error

On Error Resume Next

If RowsRng.Hidden Then '1004 Unable.. prior to putting in On Error
'QED: Can't trust the RowsRng result of the Union .Hidden ????
GoTo workaround
Else
If Not WkTimeWs.ProtectContents Then
RowsRng.Hidden = True
Else
Call UNprotectPW(WkTimeWs, PW)
RowsRng.Hidden = True
Call ProtectPW(WkTimeWs, PW)
End If
End If

workaround: ' NO problem here, worked fine.
If Not DebugRng.Hidden Then

If bSave Then Call UNprotectPW(WkTimeWs, PW)

DebugRng.Hidden = True
End If

If bSave Then Call ProtectPW(WkTimeWs, PW)
Application.EnableEvents = True
Return
--
Neal Z