2015-04-08 2 views
0

В моем текущем коде используется событие Workbook_Open для запуска пользовательской формы, которая запрашивает то, что пользователь хочет сделать, если они выбирают «A», он заполняет форму пользователя списком, который отображает все открытые workbooks.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 

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

ответ

1

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

Далее, вы должны сказать, что VBA значение учебное пособие, Workbooks(vVal)

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

Так что если MYDATA является рабочий лист в рабочей книге vVal:

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

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

+0

Спасибо за ваше предложение! Я внедрил это изменение и получаю ошибку компиляции: не найден метод или элемент данных, относящийся к строке «С книгами (Vval)» ... Я сохранил общедоступную переменную в начале модуля. – user3794203

+0

Когда кто-то выбирает значение в Listbox1, какое значение имеет значение в Vval? – shagans

+0

@shagans - Вы имеете в виду окно Immediate? – user3794203

Смежные вопросы