Вызовы пользователей в нескольких модулях

В моем текущем коде используется событие Workbook_Open для запуска пользовательской формы, которая запрашивает то, что пользователь хочет сделать, если они выбирают «A», он заполняет пользовательскую форму списком, который отображает все открытые имена workbookss.name. Используя событие ListBox_DblClick, я хочу, чтобы у пользователя было возможность дважды щелкнуть имя книги, которую они хотели бы активировать для запуска некоторых задач, связанных с копированием информации с одного листа (книга, которая экспортируется во временную папку с полу-невозможная система именования) в книгу, в которой я знаю имя и расположение. Кажется, я не могу получить значение списка, которое будет вызвано после события двойного щелчка. Любые указатели?

Код в Userform2:

Option Explicit Public Vval As String Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Vval = Me.ListBox1.Value Call AUTOMATEME Unload Me End Sub Private Sub UserForm_Initialize() Dim wkb As Workbook With Me.ListBox1 For Each wkb In Application.Workbooks .AddItem wkb.Name Next wkb End With End Sub 

Суб, что вызовы с двойным щелчком (тот, с которым у меня возникают проблемы):

 Sub AUTOMATEME() With Listbox1.Value Worksheets("MYDATA").Range("D2:D103").Select Selection.Copy Workbooks("ALL_Data.xlsm").Worksheets("FORMULAS").Select Range("G2").Select ActiveSheet.Paste Sheets("FORMULAS").Select ListBox1.Value.Select Range("E2:E103").Select Selection.Copy Workbooks("ALL_Data.xlsm").Worksheets("FORMULAS").Select Range("G2").Select Range("E2").Select ActiveSheet.Paste End With End Sub 

Спасибо за любую помощь!

    Во-первых, вы должны использовать общедоступную переменную vVal, которую вы назначили в событии DblClick. Публичные переменные сохраняются, значения пользовательской формы – нет.

    Затем вам нужно сообщить VBA, что значение – это рабочая тетрадь, Workbooks(vVal)

    Наконец, внутри a With вы должны выполнять только действия над объектом With .

    Поэтому, если MYDATA – это рабочий лист в книге vVal:

     With Workbooks(vVal) .Worksheets("MYDATA").Range("D2:D103").Select End With 

    Обратите внимание на период, который префикрует рабочие листы

    Давайте будем гением компьютера.