7

我在这个模块中有代码:

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'
4

3 回答 3

13

两件事情

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

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

将其更改为

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

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

ThisWorkbook.Sheets("SSSSSS").Unprotect "myPassword"
于 2012-09-05T06:56:04.740 回答
0

当您从表单获得控件时,没有问题
,但如果您从工作表本身获得它,那么它实际上可以工作,但出现错误: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 是一个布尔函数:true

Application.ScreenUpdating = True
Application.DisplayAlerts = True

或假

Application.ScreenUpdating = False
Application.DisplayAlerts = False
于 2019-11-07T14:21:46.950 回答
-1

我有一个类似的问题(只有错误代码是 1004,但错误消息是相同的)。在我的 Excel 工作表上解决问题的方法是删除我试图隐藏的范围内的评论。似乎在应该隐藏的范围内不允许评论。

于 2021-02-23T12:38:00.730 回答