Передача переменной для хранения выбранного элемента списка - PullRequest
0 голосов
/ 31 марта 2020

Я могу пропустить только глупую маленькую деталь, но я не могу ее повесить.

Я создал пользовательскую форму со списком, в котором я хочу, чтобы пользователь выбрал один элемент. Это работает, поскольку моя переменная «termin» имеет правильное значение, прежде чем я закрою форму пользователя

Private Sub OKButton_click()
termin = Eventlist.List(Eventlist.ListIndex)
MsgBox termin             'Just for testing purposes. It gives me the selected item
Unload Eventabfrage
End Sub

И это часть того, что у меня есть в «ThisOutlookSession»:

Option Explicit
Dim termin As String

Public Sub MailMerge()

    Eventabfrage.Show
    MsgBox termin   'and there it is empty but shouldn't be empty
enter code here

End Sub

Что мне нужно сделать, чтобы передать значение в мой MailMerge Sub? Это макрос в Outlook, поэтому хранить его в любой ячейке Excel нельзя.

1 Ответ

0 голосов
/ 31 марта 2020

, кроме использования переменной Public (что я хотел бы использовать только как последний шанс, так как она подвержена множеству недостатков), вы можете использовать свойство UserForm class Tag для передачи информации в экземпляр пользовательской формы и для него. более безопасная схема создания и завершения пользовательской формы:

в вызывающем модуле:

Public Sub MailMerge()
    Dim termin As String ' declare 'termin' as a Sub scoped variable

    With New Eventabfrage ' get a new instance of the wanted userform class and reference it

        .Show

        termin = .Tag ' retireve referenced userform 'Tag' property and store it in 'termin' variable

        'enter code here  
    End With ' <-- this will unload the userform instance

End Sub

в модуле класса Eventabfrage

Private Sub OKButton_Click()
    With Me ' reference the Userform class current instance
        .Tag = .Eventlist.List(.Eventlist.ListIndex)
        .Hide ' hide the userform instaed of unloading it, so as to have it "alive", along with its properties (and methods) in its calling sub
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...