Stop UserForm_Initialize from triggering ToggleButton_Click event












1















I have one sheet ("Settings"), which needs to be hidden most of the time. I have created Settings UserForm which contains various settings buttons and toggle button in there hides/show that hidden sheet (then clicked and password is entered).



Macro for hiding/showing sheet:



Private Sub SettingsTB_Click()

Dim strPassTry As String
Dim strPassword As String
Dim lTries As Long
Dim bSuccess As Boolean

If SettingsTB.Value = True Then
strPassword = "asd"
For lTries = 1 To 3
strPassTry = InputBox("Enter password", "Show Settings sheet")
If strPassTry = vbNullString Then Exit Sub
bSuccess = strPassword = strPassTry
If bSuccess = True Then Exit For
MsgBox "Incorrect password"
Next lTries

If bSuccess = True Then
Worksheets("Settings").Visible = True
End If
Else
Worksheets("Settings").Visible = xlSheetHidden
End If

End Sub


That macro works as intended, problem arises then I open UserForm and "Settings" Sheet is left visible. UserForm_Initialize event triggers SettingsTB_Click event (ask for entering password).



Code in UserForm_initialize used for remembering toggle button position (without it, every time, UserForm is opened, toggle button in FALSE possition):



Private Sub UserForm_Initialize()

If Worksheets("Settings").Visible = True Then
SettingsTB.Value = True
Else
SettingsTB.Value = False
End If

End Sub


Is it possible to stop SettingsTB_Click from triggering on UserForm_Initialize or should I use completely different approach?










share|improve this question



























    1















    I have one sheet ("Settings"), which needs to be hidden most of the time. I have created Settings UserForm which contains various settings buttons and toggle button in there hides/show that hidden sheet (then clicked and password is entered).



    Macro for hiding/showing sheet:



    Private Sub SettingsTB_Click()

    Dim strPassTry As String
    Dim strPassword As String
    Dim lTries As Long
    Dim bSuccess As Boolean

    If SettingsTB.Value = True Then
    strPassword = "asd"
    For lTries = 1 To 3
    strPassTry = InputBox("Enter password", "Show Settings sheet")
    If strPassTry = vbNullString Then Exit Sub
    bSuccess = strPassword = strPassTry
    If bSuccess = True Then Exit For
    MsgBox "Incorrect password"
    Next lTries

    If bSuccess = True Then
    Worksheets("Settings").Visible = True
    End If
    Else
    Worksheets("Settings").Visible = xlSheetHidden
    End If

    End Sub


    That macro works as intended, problem arises then I open UserForm and "Settings" Sheet is left visible. UserForm_Initialize event triggers SettingsTB_Click event (ask for entering password).



    Code in UserForm_initialize used for remembering toggle button position (without it, every time, UserForm is opened, toggle button in FALSE possition):



    Private Sub UserForm_Initialize()

    If Worksheets("Settings").Visible = True Then
    SettingsTB.Value = True
    Else
    SettingsTB.Value = False
    End If

    End Sub


    Is it possible to stop SettingsTB_Click from triggering on UserForm_Initialize or should I use completely different approach?










    share|improve this question

























      1












      1








      1








      I have one sheet ("Settings"), which needs to be hidden most of the time. I have created Settings UserForm which contains various settings buttons and toggle button in there hides/show that hidden sheet (then clicked and password is entered).



      Macro for hiding/showing sheet:



      Private Sub SettingsTB_Click()

      Dim strPassTry As String
      Dim strPassword As String
      Dim lTries As Long
      Dim bSuccess As Boolean

      If SettingsTB.Value = True Then
      strPassword = "asd"
      For lTries = 1 To 3
      strPassTry = InputBox("Enter password", "Show Settings sheet")
      If strPassTry = vbNullString Then Exit Sub
      bSuccess = strPassword = strPassTry
      If bSuccess = True Then Exit For
      MsgBox "Incorrect password"
      Next lTries

      If bSuccess = True Then
      Worksheets("Settings").Visible = True
      End If
      Else
      Worksheets("Settings").Visible = xlSheetHidden
      End If

      End Sub


      That macro works as intended, problem arises then I open UserForm and "Settings" Sheet is left visible. UserForm_Initialize event triggers SettingsTB_Click event (ask for entering password).



      Code in UserForm_initialize used for remembering toggle button position (without it, every time, UserForm is opened, toggle button in FALSE possition):



      Private Sub UserForm_Initialize()

      If Worksheets("Settings").Visible = True Then
      SettingsTB.Value = True
      Else
      SettingsTB.Value = False
      End If

      End Sub


      Is it possible to stop SettingsTB_Click from triggering on UserForm_Initialize or should I use completely different approach?










      share|improve this question














      I have one sheet ("Settings"), which needs to be hidden most of the time. I have created Settings UserForm which contains various settings buttons and toggle button in there hides/show that hidden sheet (then clicked and password is entered).



      Macro for hiding/showing sheet:



      Private Sub SettingsTB_Click()

      Dim strPassTry As String
      Dim strPassword As String
      Dim lTries As Long
      Dim bSuccess As Boolean

      If SettingsTB.Value = True Then
      strPassword = "asd"
      For lTries = 1 To 3
      strPassTry = InputBox("Enter password", "Show Settings sheet")
      If strPassTry = vbNullString Then Exit Sub
      bSuccess = strPassword = strPassTry
      If bSuccess = True Then Exit For
      MsgBox "Incorrect password"
      Next lTries

      If bSuccess = True Then
      Worksheets("Settings").Visible = True
      End If
      Else
      Worksheets("Settings").Visible = xlSheetHidden
      End If

      End Sub


      That macro works as intended, problem arises then I open UserForm and "Settings" Sheet is left visible. UserForm_Initialize event triggers SettingsTB_Click event (ask for entering password).



      Code in UserForm_initialize used for remembering toggle button position (without it, every time, UserForm is opened, toggle button in FALSE possition):



      Private Sub UserForm_Initialize()

      If Worksheets("Settings").Visible = True Then
      SettingsTB.Value = True
      Else
      SettingsTB.Value = False
      End If

      End Sub


      Is it possible to stop SettingsTB_Click from triggering on UserForm_Initialize or should I use completely different approach?







      excel vba excel-vba






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 22 '18 at 8:54









      GexasGexas

      1309




      1309
























          1 Answer
          1






          active

          oldest

          votes


















          1














          Use a public variable or the tag-property to stop the click-event from running.



          Private Sub SettingsTB_Click()


          Dim strPassTry As String
          Dim strPassword As String
          Dim lTries As Long
          Dim bSuccess As Boolean

          If SettingsTB.Tag Then Exit Sub

          If SettingsTB.Value = True Then
          strPassword = "asd"
          For lTries = 1 To 3
          strPassTry = InputBox("Enter password", "Show Settings sheet")
          If strPassTry = vbNullString Then Exit Sub
          bSuccess = strPassword = strPassTry
          If bSuccess = True Then Exit For
          MsgBox "Incorrect password"
          Next lTries

          If bSuccess = True Then
          Worksheets("Settings").Visible = True
          End If
          Else
          Worksheets("Settings").Visible = xlSheetHidden
          End If

          End Sub
          Private Sub UserForm_Initialize()
          SettingsTB.Tag = True
          If Worksheets("Settings").Visible = True Then

          SettingsTB.Value = True
          Else
          SettingsTB.Value = False
          End If
          SettingsTB.Tag = False
          End Sub





          share|improve this answer























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53427081%2fstop-userform-initialize-from-triggering-togglebutton-click-event%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            Use a public variable or the tag-property to stop the click-event from running.



            Private Sub SettingsTB_Click()


            Dim strPassTry As String
            Dim strPassword As String
            Dim lTries As Long
            Dim bSuccess As Boolean

            If SettingsTB.Tag Then Exit Sub

            If SettingsTB.Value = True Then
            strPassword = "asd"
            For lTries = 1 To 3
            strPassTry = InputBox("Enter password", "Show Settings sheet")
            If strPassTry = vbNullString Then Exit Sub
            bSuccess = strPassword = strPassTry
            If bSuccess = True Then Exit For
            MsgBox "Incorrect password"
            Next lTries

            If bSuccess = True Then
            Worksheets("Settings").Visible = True
            End If
            Else
            Worksheets("Settings").Visible = xlSheetHidden
            End If

            End Sub
            Private Sub UserForm_Initialize()
            SettingsTB.Tag = True
            If Worksheets("Settings").Visible = True Then

            SettingsTB.Value = True
            Else
            SettingsTB.Value = False
            End If
            SettingsTB.Tag = False
            End Sub





            share|improve this answer




























              1














              Use a public variable or the tag-property to stop the click-event from running.



              Private Sub SettingsTB_Click()


              Dim strPassTry As String
              Dim strPassword As String
              Dim lTries As Long
              Dim bSuccess As Boolean

              If SettingsTB.Tag Then Exit Sub

              If SettingsTB.Value = True Then
              strPassword = "asd"
              For lTries = 1 To 3
              strPassTry = InputBox("Enter password", "Show Settings sheet")
              If strPassTry = vbNullString Then Exit Sub
              bSuccess = strPassword = strPassTry
              If bSuccess = True Then Exit For
              MsgBox "Incorrect password"
              Next lTries

              If bSuccess = True Then
              Worksheets("Settings").Visible = True
              End If
              Else
              Worksheets("Settings").Visible = xlSheetHidden
              End If

              End Sub
              Private Sub UserForm_Initialize()
              SettingsTB.Tag = True
              If Worksheets("Settings").Visible = True Then

              SettingsTB.Value = True
              Else
              SettingsTB.Value = False
              End If
              SettingsTB.Tag = False
              End Sub





              share|improve this answer


























                1












                1








                1







                Use a public variable or the tag-property to stop the click-event from running.



                Private Sub SettingsTB_Click()


                Dim strPassTry As String
                Dim strPassword As String
                Dim lTries As Long
                Dim bSuccess As Boolean

                If SettingsTB.Tag Then Exit Sub

                If SettingsTB.Value = True Then
                strPassword = "asd"
                For lTries = 1 To 3
                strPassTry = InputBox("Enter password", "Show Settings sheet")
                If strPassTry = vbNullString Then Exit Sub
                bSuccess = strPassword = strPassTry
                If bSuccess = True Then Exit For
                MsgBox "Incorrect password"
                Next lTries

                If bSuccess = True Then
                Worksheets("Settings").Visible = True
                End If
                Else
                Worksheets("Settings").Visible = xlSheetHidden
                End If

                End Sub
                Private Sub UserForm_Initialize()
                SettingsTB.Tag = True
                If Worksheets("Settings").Visible = True Then

                SettingsTB.Value = True
                Else
                SettingsTB.Value = False
                End If
                SettingsTB.Tag = False
                End Sub





                share|improve this answer













                Use a public variable or the tag-property to stop the click-event from running.



                Private Sub SettingsTB_Click()


                Dim strPassTry As String
                Dim strPassword As String
                Dim lTries As Long
                Dim bSuccess As Boolean

                If SettingsTB.Tag Then Exit Sub

                If SettingsTB.Value = True Then
                strPassword = "asd"
                For lTries = 1 To 3
                strPassTry = InputBox("Enter password", "Show Settings sheet")
                If strPassTry = vbNullString Then Exit Sub
                bSuccess = strPassword = strPassTry
                If bSuccess = True Then Exit For
                MsgBox "Incorrect password"
                Next lTries

                If bSuccess = True Then
                Worksheets("Settings").Visible = True
                End If
                Else
                Worksheets("Settings").Visible = xlSheetHidden
                End If

                End Sub
                Private Sub UserForm_Initialize()
                SettingsTB.Tag = True
                If Worksheets("Settings").Visible = True Then

                SettingsTB.Value = True
                Else
                SettingsTB.Value = False
                End If
                SettingsTB.Tag = False
                End Sub






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 22 '18 at 9:36









                EvREvR

                1,2342313




                1,2342313






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53427081%2fstop-userform-initialize-from-triggering-togglebutton-click-event%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Wiesbaden

                    Marschland

                    Dieringhausen