调用多个模块中的用户select

我当前的代码使用Workbook_Open事件来运行一个用户表单,询问用户想要做什么,如果他们select“A”它填充一个用户窗体显示所有打开的工作簿名称(S)的列表框。 使用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 

感谢您的任何帮助!

首先,您应该使用您在DblClick事件中分配的公共variablesvVal。 公共variables保持不变,用户表单值不会。

接下来,您必须告诉VBA该值是一个工作簿, Workbooks(vVal)

最后,里面的一个With你只应该在With对象上执行动作。

因此,如果MYDATA是vVal工作簿中的工作表:

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

请注意为工作表添加前缀的时间段