在多个模块中调用用户选择
Recall User Selections Within Multiple Modules
我当前的代码使用 Workbook_Open 事件到 运行 一个询问用户想要做什么的用户表单,如果他们 select "A" 它填充一个用户表单显示所有打开的 workbooks.name(s) 的列表框。使用 ListBox_DblClick 事件,我希望用户能够双击他们希望激活的工作簿名称以执行 运行 一些涉及从 [=27= 复制信息的任务](导出到具有半不可能命名系统的临时文件夹的工作簿)到我知道其名称和位置的工作簿中。我似乎无法在双击事件后调用列表框值。有什么指点吗?
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 事件中分配的 public 变量 vVal。 Public 变量持续存在,用户窗体值不存在。
接下来,你要告诉VBA这个值是一个工作簿,Workbooks(vVal)
最后,在 With
中,您应该只对 With
对象执行操作。
因此,如果 MYDATA 是 vVal 工作簿中的工作表:
With Workbooks(vVal)
.Worksheets("MYDATA").Range("D2:D103").Select
End With
注意工作表前面的句点
我当前的代码使用 Workbook_Open 事件到 运行 一个询问用户想要做什么的用户表单,如果他们 select "A" 它填充一个用户表单显示所有打开的 workbooks.name(s) 的列表框。使用 ListBox_DblClick 事件,我希望用户能够双击他们希望激活的工作簿名称以执行 运行 一些涉及从 [=27= 复制信息的任务](导出到具有半不可能命名系统的临时文件夹的工作簿)到我知道其名称和位置的工作簿中。我似乎无法在双击事件后调用列表框值。有什么指点吗?
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 事件中分配的 public 变量 vVal。 Public 变量持续存在,用户窗体值不存在。
接下来,你要告诉VBA这个值是一个工作簿,Workbooks(vVal)
最后,在 With
中,您应该只对 With
对象执行操作。
因此,如果 MYDATA 是 vVal 工作簿中的工作表:
With Workbooks(vVal)
.Worksheets("MYDATA").Range("D2:D103").Select
End With
注意工作表前面的句点