Error message when hiding rows in a protected worksheet

Godot60

Board Regular
Joined
May 11, 2017
Messages
62
Hi,

I have form that has VBA code in it that: allows users to make a selection which determines which rows they see, calculates when a certain cell has a total of more than 100% and resizes rows depending on text entered. All three work perfectly.

The problem arises when I try to protect the workbook. Once I do that, I get the following error message when the user makes a choice about what rows they see. Then i get the following message: runtime error 1004 unable to set the hidden property of the range class.

See VBA below.

Any suggestions?

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B6").Value = "Individual Contributor - No direct reports" Then
Rows("98:106").EntireRow.Hidden = True
ElseIf Range("B6").Value = "Management - Has direct reports" Then
Rows("98:106").EntireRow.Hidden = False
End If

If Range("D64") > 100 Then
MsgBox "Percentage exceeds 100"
End If

Dim NewRwHt As Single
Dim cWdth As Single, MrgeWdth As Single
Dim c As Range, cc As Range
Dim ma As Range
With Target
If .MergeCells And .WrapText Then

Set c = Target.Cells(1, 1)
cWdth = c.ColumnWidth
Set ma = c.MergeArea
For Each cc In ma.Cells
MrgeWdth = MrgeWdth + cc.ColumnWidth
Next
Application.ScreenUpdating = False
ma.MergeCells = False
c.ColumnWidth = MrgeWdth
c.EntireRow.AutoFit
NewRwHt = c.RowHeight
c.ColumnWidth = cWdth
ma.MergeCells = True
ma.RowHeight = NewRwHt
cWdth = 0: MrgeWdth = 0

Application.ScreenUpdating = True
End If
End With
End Sub
 

Excel Facts

Quick Sum
Select a range of cells. The total appears in bottom right of Excel screen. Right-click total to add Max, Min, Count, Average.
You could unprotect and then reprotect the sheet in the code.
 
Upvote 0
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim NewRwHt       As Double
  Dim cWdth         As Double
  Dim MrgeWdth      As Double
  Dim c             As Range
  Dim cc            As Range
  Dim ma            As Range

  Me.Unprotect Password:="Shhh"
  
  If Range("B6").Value = "Individual Contributor - No direct reports" Then
    Rows("98:106").EntireRow.Hidden = True
  ElseIf Range("B6").Value = "Management - Has direct reports" Then
    Rows("98:106").EntireRow.Hidden = False
  End If

  If Range("D64") > 100 Then
    MsgBox "Percentage exceeds 100"
  End If

  With Target
    If .MergeCells And .WrapText Then

      Set c = Target.Cells(1, 1)
      cWdth = c.ColumnWidth
      Set ma = c.MergeArea
      For Each cc In ma.Cells
        MrgeWdth = MrgeWdth + cc.ColumnWidth
      Next
      Application.ScreenUpdating = False
      ma.MergeCells = False
      c.ColumnWidth = MrgeWdth
      c.EntireRow.AutoFit
      NewRwHt = c.RowHeight
      c.ColumnWidth = cWdth
      ma.MergeCells = True
      ma.RowHeight = NewRwHt
      cWdth = 0: MrgeWdth = 0

      Application.ScreenUpdating = True
    End If
  End With

  Me.Protect Password:="Shhh"
End Sub

It would be a kindness if you would wrap your code in code tags.
 
Upvote 0

Forum statistics

Threads
1,223,912
Messages
6,175,346
Members
452,638
Latest member
Oluwabukunmi

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top