Excel:将用户input传送到另一个模块

我有一个填充列表框的macros,它告诉我当前在我的计算机上打开的所有工作簿名称,该列表包含一个双击事件来select我希望激活的工作簿的名称以运行其他过程。 我已经尝试了几种方法来从列表框中select要在我的第二个程序中被召回,但我似乎没有正确的措辞我的代码,我不断收到错误。 有什么build议?

目前我正在使用的是:

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim BName As Long For BName = 0 To Me.ListBox1.ListCount - 1 If Me.ListBox1.Selected(BName) Then Me.ListBox1.Selected(BName) = True With Me.ListBox1.Selected(NName) Call Q End If 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 Q:

 Public Sub Q() Dim BName As Object With ListBox1.Selected(BName).Value Workbooks(BName).Activate With Active.Workbooks .Worksheets("MYDATA").Range("D2:D103").Select Selection.Copy Workbooks("MARCH1158(1).xlsm").Worksheets("FORMULAS").Select Range("G2").Select ActiveSheet.Paste Sheets("Interface").Select Sheets("FORMULAS").Select ListBox1.Value.Select Range("E2:E103").Select Range("E103").Activate Application.CutCopyMode = False Selection.Copy ActiveWindow.ActivateNext Range("E2").Select ActiveSheet.Paste Sheets("Interface").Select Sheets("FORMULAS").Select ActiveWindow.SelectedSheets.Visible = False End With End With End Sub 

如果我正确地理解了这个问题,我会说你最好的select是创build程序Q来获取一个参数,参数被设置为列表框中的选定值。 由于我们没有Q的代码,我已经设置了一个相对简单的程序来开始。

 Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim BName As Long For BName = 0 To Me.ListBox1.ListCount - 1 If Me.ListBox1.Selected(BName) Then Q (Me.ListBox1.List(BName)) End If Next BName Unload Me End Sub Private Sub UserForm_Initialize() With Me.ListBox1 .AddItem "Hello" .AddItem "Goodbye" .AddItem "Saluations" End With End Sub Sub Q(strSelection As String) Workbooks(strSelection).Activate ' Enter the rest of the code here End Sub