Valour
Valour

Reputation: 43

Multipage error: The object invoked has disconnected from its clients

So I've probably spent the last week researching/trying to fix this annoying error but to no avail. Here's what I'm trying to do and the error I'm getting:

I have a userform that contains 12 multipage pages and to access each one I have coded previous/next buttons. Now, One of these pages is disabled through properties to hide from the user, that is until a specific checkbox is clicked. When it's clicked, the page is enabled, and the user is now able to view this page as well as all the others. when the checkbox is clicked again (making it false and no longer true), the page hides from the user's sight. This is basically what I'm trying to accomplish. The pages are like so:

page1, page2, page3, page4, "page5", page6, etc.

As you can see, page5 is what is being disabled/enabled. Now also, something important to note, I've made the userform to appear before the workbook is actually visible using this:

 Private Sub Workbook_Open()
    Application.ScreenUpdating = False

    ThisWorkbook.Application.Visible = False
    OpeningWindow.Show
    Windows(ThisWorkbook.Name).Visible = True
    Application.Visible = True
    Application.ScreenUpdating = True
End Sub

This I would like to avoid changing because it's vital that the userform appear first before the workbook because the workbook is acting as the storage/database for everything that is being typed in the userform using this multipage system. Now when I run the userform through VBA and test out this function "checkbox_click Enables/Disables multipage page", it works no problem. When I attempt to open it (as if you were starting up excel without anything opened) everything works fine, until I click the checkbox in question to enable the multipage to make it visible. This is where I'm getting the error "The object invoked has disconnected from it's clients". Now I've tried some other things out to see if I could get the same result:

  1. Made the multipage page visible = False instead of Enabled = false.

Result: This somewhat works, however when attempting to click the previous button to go back a page (Page6 to Page5) when Page5 is visible = False, The previous button doesn't respond, as if it knows that Page5 is there even though it's invisible.

Anyway, to wrap things up, I would like to ask the community here if anyone knows exactly why, from the code I've provided below that is responsible for this "page enable/disable feature", I'm getting this object invoked has disconnected error and if there's a way to fix it.

Private Sub CheckBox119_Click()
    If CheckBox119.Value = True Then
        Me.MultiPage1.Pages(5).Enabled = True
        CheckBox138.Value = True
        Label309.Visible = True
    Else
        Me.MultiPage1.Pages(5).Enabled = False
        CheckBox138.Value = False
        Label309.Visible = False
    End If
End Sub

CheckBox138 btw is located on Page5 and is there if the user wishes to click it to disable page5 and Jump to Page4, which is this code:

Private Sub CheckBox138_Click()
    If CheckBox138.Value = False Then
        MultiPage1.Value = 4
        CheckBox119.Value = False
        Label309.Visible = False
    End If
End Sub

Also, I'm relatively new to coding in VBA, but I'm always ready to learn.

Upvotes: 0

Views: 475

Answers (1)

Valour
Valour

Reputation: 43

After some playing around, I believe I figured out what the problem was. The checkbox138 in the disabled page was the culprit. By deleting the code Private sub checkbox138_click(), it works now. I'm not entirely sure why this is the case (so someone with more knowledge may be able to explain) But When checkbox119 is clicked, checkbox138 is suppose to turn true being that's what the initial code expressed. However, even though making checkbox119 true is suppose to enable the disabled page followed by making checkbox138 true, there seems to be a hiccup. It seems checkbox138 is thinking the disabled page is still disabled (even though checkbox119 is suppose to enable it) therefore making the checkbox138 hidden.

Upvotes: 1

Related Questions