我正在为我的公司创建一个工作表。如果该范围的值为“”,我已经设置了几行不同的范围以自动隐藏。问题是,现在,我已经保护了工作表并且我的自动隐藏功能不起作用,因为行受到了格式化保护。我知道我可以取消保护工作表然后重新保护它并允许用户格式化行以便快速修复但我不希望用户拥有哪怕是一点点的能力。根据我尝试的解决方案,我特别在
xRg.EntireRow.Hidden = True
或 xRg.EntireRow.Hidden = False
上收到运行时错误。这是工作表中自动隐藏功能的VBA代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xRg As Range
Application.ScreenUpdating = False
For Each xRg In Range("C24,C52,C81,C90:C123,A124:A126,A130:A353")
If xRg.Value = "" Then
xRg.EntireRow.Hidden = True
Else
xRg.EntireRow.Hidden = False
End If
Next xRg
Application.ScreenUpdating = True
End Sub
我已经尝试了一些方法来解决我在谷歌上发现的问题,但到目前为止都没有奏效。我无法找到我尝试过的所有示例,但这是我目前拥有的:
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("yoursheetname").Unprotect Password:="abc"
Dim xRg As Range
Application.ScreenUpdating = False
For Each xRg In Range("C24,C52,C81,C90:C123,A124:A126,A130:A353")
If xRg.Value = "" Then
xRg.EntireRow.Hidden = True
Else
xRg.EntireRow.Hidden = False
End If
Next xRg
Application.ScreenUpdating = True
Sheets("yoursheetname").Protect Password:="abc", AllowFormattingRows:=True
End Sub
我想通了大家。问题是我引用的是工作表编号而不是工作表名称。这是解决方案:
''' 私有子工作表_Change(ByVal Target As Range) 将 xRg 调暗为范围 Sheets("CFIA Label Verifier").Unprotect Password:="67341289" Application.ScreenUpdating = False 对于范围内的每个 xRg(“C24,C52,C81,C90:C123,A124:A126,A130:A353”) 如果 xRg.Value = "" 那么 xRg.EntireRow.Hidden = True 别的 xRg.EntireRow.Hidden = 假 万一 下一个 xRg Application.ScreenUpdating = True Sheets("CFIA Label Verifier").Protect Password:="67341289", AllowFormattingCells:=True 结束子 '''