【问题标题】:Unable to set the hidden property of the range class run time error '1003'无法设置范围类运行时错误“1003”的隐藏属性
【发布时间】:2021-02-23 20:38:00
【问题描述】:

我在这个模块中有代码:

Sub HideSalTable()

User = Worksheets("log").Range("R1").Value
If User = ThisWorkbook.Worksheets("SSSSSS").Range("za1").Value Then
Columns("S:AA").EntireColumn.Hidden = True

ElseIf User = ThisWorkbook.Worksheets("SSSSSS").Range("za3").Value Then
Columns("S:AA").EntireColumn.Hidden = False

ElseIf User = ThisWorkbook.Worksheets("SSSSSS").Range("za4").Value Then
Columns("S:AA").EntireColumn.Hidden = False

End If

End Sub

我有一个按钮可以使用此代码将我重定向到 ThisWorkbook.Worksheets("SSSSSS"):

Private Sub Change_SSSSSS_Button_Click()

 Dim pass1 As String
  Dim pass2 As String
  pass1 = ThisWorkbook.Worksheets("SSSSSS").Range("za3").Value
   pass2 = ThisWorkbook.Worksheets("SSSSSS").Range("za4").Value
  Dim Inp
    Dim lTries As Long



    lTries = 1
    Do
        Inp = InputBoxDK("enter password", "Zmhnk")
        If Inp = "" Or Inp = vbCancel Then Exit Sub          '* Cancel button pressed or nothing entered
        If Inp = (pass1) Or Inp = (pass2) Then
            Exit Do
        End If
        lTries = lTries + 1
        If lTries > 4 Then
            MsgBox "Error", vbInformation, "Zmhnk"
            Exit Sub
        Else
            If MsgBox("try again", vbYesNo, "error_Zmhnk") = vbNo Then Exit Sub
        End If
    Loop

 Application.ScreenUpdating = False

 Sheets("SSSSSS").Visible = True
 Sheets("SSSSSS").Activate

 Application.ScreenUpdating = True

End Sub

问题是当用户使用第二个代码按下按钮时,我遇到了一个错误,我不知道为什么。

错误:

Unable to set the hidden property of the range class run time error '1003'

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    两件事

    1) 你的范围没有完全合格。我了解您正在被重定向,但这更安全。

    Columns("S:AA").EntireColumn.Hidden = True
    

    改成

    ThisWorkbook.Sheets("SSSSSS").Columns("S:AA").EntireColumn.Hidden = True
    

    2) 我相信您的工作表受到保护。你必须取消保护它。你可以这样做

    ThisWorkbook.Sheets("SSSSSS").Unprotect "myPassword"
    

    【讨论】:

    • 谢谢 Siddharth,我还可以强调一下,您必须指定 .EntireColumn/Row - 虽然这不是 OP 的问题,而且在您的回答中,但肯定有很多像我这样的人直接来自谷歌正在寻找此回复
    • 保护表是我的原因
    【解决方案2】:

    当您从表单获得控制时,没有问题
    但是如果您从工作表本身获得它,那么它实际上可以工作,但出现错误:1004
    所以只需使用(On Error Resume Next)

    Private Sub ComboBox1_Change()
    Dim wsMon As Worksheet
    Set wsMon = ThisWorkbook.Worksheets("Montag")
    On Error Resume Next
    Select Case ComboBox1.ListIndex
           Case 0
                xHide (False)
                wsMon.Rows("12:25").EntireRow.Hidden = True
                xHide (True)
           Case 1
                xHide (False)
                wsMon.Rows("12:25").EntireRow.Hidden = False
                wsMon.Rows("19:25").EntireRow.Hidden = True
                xHide (True)
           Case 2
                xHide (False)
                wsMon.Rows("12:25").EntireRow.Hidden = False
                xHide (True)
    End Select
    
    End Sub
    

    xHide 是一个布尔函数: 真的

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    

    或错误

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    

    【讨论】:

      【解决方案3】:

      我遇到了类似的问题(只有错误代码是 1004,但错误消息是相同的)。在我的 Excel 表中解决问题的方法是删除我试图隐藏的范围内的评论。在应该隐藏的范围内似乎不允许使用 cmets。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-28
        • 2017-07-17
        相关资源
        最近更新 更多