Отображение переменной из элемента управления Activex - [VBA] - PullRequest
0 голосов
/ 21 февраля 2019

Здравствуйте, я пытаюсь использовать публично объявленную переменную, которой присвоено значение при нажатии одной из двух кнопок выбора внутри пользовательской формы.

Пользовательская форма показывает, и я могу нажать любую из двух кнопок, которые яесть в кадре, который я создал, но переменная не улавливает щелчок, или на самом деле я не знаю, что я делаю с элементами управления пользовательской формы.И я не думаю, что форма тоже скрывается, нажатие кнопки выбора кажется пустым щелчком, оно подсвечивается, но ничего не делает после этого.

Плюс я не уверен, нужно ли размещать сам кодраздел кода пользовательской формы или раздел кода модуля, это имеет значение?В настоящее время выполняется в разделе кода модуля.

Option Explicit

Dim C As String
Public Sub OptionButton1_Click()
C = "Delivery"
End Sub

Public Sub OptionButton2_Click()
C = "Holiday"
End Sub


Public Sub Optionbutton()
Userform1.Show
Sheet1.Cells(1, 1).Value = C
Userform1.Hide

End Sub

******** - Edit - ********* Я полагаю, что метод Зака ​​выполняет свою работу, печатая вЯчейка A1, но то, что мне действительно нужно, это то, что обработчик событий должен быть закрытым, запуск отладки указывает на то, что выполнение останавливается, когда закрывается подпрограмма sub, что может быть событием click в optionbutton1 или optionbutton2, и это заставило меня поверить, чтоclick был фиктивным click.

Но то, что я действительно хотел, это чтобы переменная C была доступна в общедоступной подпрограмме, из которой я выполняю, есть ли способ для выполнения перенаправить в общедоступную подпрограмму послеC присваивается значение в частной подпрограмме optionbutton?

Например, если C был назначен в частной подпрограмме, но мои критерии успеха были определены успешным выполнением общедоступной подпрограммы, определенной выше, потому что у меня большемакрос, в котором эта переменная будет использоваться внутри открытого подпрограммы, и это только часть проблемы, или проблема, которую я не могу решить.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Если я правильно понимаю, ваша форма имеет две кнопки выбора.Таким образом, код вашей формы должен выглядеть следующим образом:

Option Explicit

Private Sub OptionButton1_Click()
    C = "Delivery"
End Sub

Private Sub OptionButton2_Click()
    C = "Holiday"
End Sub

Это предполагает, что глобальная переменная C объявлена ​​где-то в стандартном модуле:

Option Explicit
Public C As String

Public Sub Optionbutton()
    Userform1.Show
    Sheet1.Cells(1, 1).Value = C
End Sub

Обратите внимание, что этоотображает форму модально , что означает, что следующая инструкция выполняется только после закрытия / уничтожения формы.По этой причине нет необходимости в последующем вызове Userform1.Hide: форма к тому времени уже ушла.

Как только вы освоитесь с управлением глобальными переменными из кода формы, прочитайте UserForm1.Покажите (я написал эту статью), чтобы узнать о более надежном способе решения этой проблемы.

0 голосов
/ 21 февраля 2019

Попробуйте это: вам нужно указать элементу управления, куда поместить значение после нажатия кнопки.

Option Explicit
Dim C As String
Private Sub OptionButton1_Click()
    C = "Delivery"
    Sheet1.Cells(1, 1) = C
    Userform1.Hide
End Sub
Private Sub OptionButton2_Click()
    C = "Holiday"
    Sheet1.Cells(1, 1) = C
    Userform1.Hide
End Sub
Public Sub Optionbutton()
Userform1.Show vbModeless
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...