【发布时间】:2021-08-07 07:17:23
【问题描述】:
我将始终将 Workbook SQ_Macro_v1 作为我的主要数据库。
两个命名的工作簿 old_wk 和 new_wk 将具有不同的名称,因为我将在我计算机上当前活动的 WB 中选择它们。
我要一个 VBA ComboBox 列出所有内容以供我选择,但最后我无法存储我选择的 WB 的名称。
Sub Macro1()
Dim main_wk, old_wk, new_wk As Workbook
Set main_wk = Workbooks("SQ_Macro_v1.xlsm")
Set old_wk = Workbooks(old_chosen) 'also tried UserForm1.ComboBox1.Value
Set new_wk = Workbooks(FileName_New) '
main_wk.Sheets("Main_DB").Range("C4").Value = old_wk.Worksheets("Sheet 1 Synthese").Range("C35").Value
当我运行下面的 UserForm 代码时,我在主 Sub 中将 old_chosen 变量设置为空。似乎当我在运行后关闭用户窗体时,什么都没有存储。关闭用户窗体后保存该变量的任何线索?
Option Explicit
Public Sub UserForm_Activate()
Dim vWorkbook As Workbook
ComboBox1.Clear
For Each vWorkbook In Workbooks
ComboBox1.AddItem vWorkbook.Name
Next
End Sub
Public Sub CommandButton1_Click()
If ComboBox1.ListIndex <> -1 Then
Call YourMacro(ComboBox1)
End If
End Sub
Public Sub YourMacro(vWorkbookName As String)
Dim old_chosen As String
old_chosen = Me.ComboBox1.Value
MsgBox "You choose: " & Workbooks(vWorkbookName).Name
End Sub
MsgBox 弹出,但之后没有值存储:
【问题讨论】: