N
Neal Zimm
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 re: .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
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 re: .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