Как остановить изменение пользовательской формы button.initialize при запуске button.click () - PullRequest
0 голосов
/ 01 июля 2019

Я хочу передать начальное значение / состояние кнопке при инициализации пользовательской формы.

Проблема, с которой я сталкиваюсь, заключается в том, что при переходе к:

"If setupws.Cells(question1row, currentsetupcol).Value = "1" Then
 Question1Button.Value = True"

Этозатем переходит в подпункт Question1Button_Click ().

Как заставить его пройти через начальное состояние настройки, не переходя в подпункт click?

Я хочу, чтобы подпрограмма click была только для кликаа не начальная настройка пользовательской формы.

Private Sub UserForm_Initialize()
    Dim buildphasews As Worksheet
    Dim Leadprogws As Worksheet
    Dim inputWks As Worksheet
    Dim setupws As Worksheet

Set setupws = Worksheets("13 Table - BuildPhase Applic")
currentsetupcol = Application.WorksheetFunction.Match("Current Sheet 
Setup", setupws.Range("A1:AZ1"), 0)

  If setupws.Cells(question1row, currentsetupcol).Value = "1" Then
  Question1Button.Value = True
  Question1Button.Caption = "question 1 will be asked"
  MsgBox "will"
  Else
  Question1Button.Value = False
  Question1Button.Caption = "question 1 will not be asked"
  MsgBox "not"
  End If

 End Sub

 Private Sub Question1Button_Click() 

Select Case Question1Button.Value
    Case True
          'MsgBox "true"
        Question1Button.Caption = "Question 1 will be asked"

    Case False
        'MsgBox "false"
           Question1Button.Caption = "Question 1 will not be asked"

    End Select
 'Call PreviousSetup
End Sub

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

Я нашел функцию application.enableevents. Я поставил = false в подпункте intialize и ниже в подпункте button_click.

Private Sub Question1Button_Click()
If Application.EnableEvents = False Then
Exit Sub
Else

Select Case Question1Button.Value
Case True
    'MsgBox "true"
    Question1Button.Caption = "Question 1 will be asked"
Case False
    'MsgBox "false"
    Question1Button.Caption = "Question 1 will not be asked"
End Select
End If

Теперь он делает все, что мне нужно.

Спасибо за ответ в любом случае.

0 голосов
/ 01 июля 2019

Изменение Value кнопки имитирует физическое нажатие кнопки.Если я правильно помню, событие _Click() возникает после того, как для кнопки Value снова установлено значение False, поэтому ваше решение проверки значения кнопки не может работать.

Попробуйте использовать флажок .

Однако, если вы хотите использовать только кнопку, вам нужен логический тип;как то так:

' In your Userform Code
Option Explicit
Dim someBool as Boolean

Private Sub UserForm_Initialize()
    [...]
    ' Instead of Question1Button.Value = True you do
    someBool = True
    [...]
    ' And instead of Question1Button.Value = False you do
    Somebool = False
    [...]
End Sub

Private Sub Question1Button_Click() 
     Select Case SomeBool
     Case True
         Question1Button.Caption = "Question 1 will be asked"
     Case False
         Question1Button.Caption = "Question 1 will not be asked"
     End Select
     'Call PreviousSetup
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...