Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error-1004 in Excel VBA- Unable to set the visible property of the worksheet class

Tags:

excel

vba

With the help of Excel forum, I have created a user login form where I have 5 users. Each user can have access to the sheets assigned to him/her only. This is working fine. But now I have protected the "workbook structure" so as to avoid users' adding/deleting sheets. Then I login again, and instead of displaying the login form, the error message pops up in Excel VBA:

Error-1004 Unable to set the visible property of the worksheet class

When I debug the error is highlighted in the following codes where the visible property of the worksheet is set as "True", "False" or "xlSheetVeryHidden".

Private Sub Workbook_Open()
    Dim wsSht As Worksheet

    Worksheets("Splash").Visible = True
    Worksheets("Users").Visible = False
    For Each wsSht In Worksheets
        If Not wsSht.Name = "Splash" Then wsSht.Visible = xlSheetVeryHidden
    Next wsSht
    With Worksheets("Splash")
        .Visible = True
        .Activate
    End With
    frmLogin.Show
    bBkIsClose = False

End Sub

Is there a way to correct this so as I can access the login form as I did prior to password protecting the "workbook structure"?

like image 268
loknath Avatar asked Mar 30 '11 08:03

loknath


People also ask

What is a 1004 error in VBA?

VBA 1004 Error is a run time error in VBA and occurs while running the code. Errors are part and parcel of the coding, especially when you are writing for the first time you may come across many errors in VBA. This is common for everybody and there is no big deal about it.

What is VBA runtime error 1004 activate method range class failed?

#6 – VBA Runtime Error 1004 Activate method range class failed: This error occurs mainly due to activating the range of cells without activating the worksheet. For example, look at the below code.

Why does excel open a file with no worksheet visible?

The reason for wanting to do this is because the file is a startup file that contains company-wide macros that should not be edited by the user. I discovered that while the Worksheet needs to be kept open, the Window displaying it does not. Now, Excel opens the file with no worksheet visible.

Are worksheets protected from macros?

Worksheets are protected, yes. Workbook structure No. When exiting all worksheets are set to visible false. This all works fine except occasionally. I have reviewed all of my macros that seem to set off this error but i can't see one that is wrong and not like the others that do not cause the error.


2 Answers

Here is another concern about this.

You can NOT hide ALL of the worksheets in a workbook. As such if you know you are going to have at least 1 sheet that will ALWAYS be visible, exclude it from the hiding process.

like image 183
GoldBishop Avatar answered Sep 19 '22 03:09

GoldBishop


Did you have another Excel Workbook opened at the same time when testing it? There's no explicit reference to the book you're looking for, so in case you run this code having a workbook where the "Splash" sheet is not available, the macro will try to set all sheets to hidden, which may raise this error.

To simulate it, open a new Excel session and run this macro:

Sub test()

    Dim oSheet As Excel.Worksheet

    For Each oSheet In Worksheets

        oSheet.Visible = xlSheetVeryHidden

    Next oSheet

End Sub

If I'm not barking to the wrong tree, you'll get the same error.

To solve it, simply add the workbook name into your loop, and it would be like this (obviously, you must ensure that there's a "Splash" sheet, or the error will arise):

For Each wsSht In Workbooks("Mybook.xlsm").Worksheets
    If Not wsSht.Name = "Splash" Then wsSht.Visible = xlSheetVeryHidden
Next wsSht

Rgds

like image 21
Tiago Cardoso Avatar answered Sep 18 '22 03:09

Tiago Cardoso