将变量名称设置为从 VBA ComboBox 中选择的工作簿
Set a variable name to a Workbook selected from a VBA ComboBox
我将始终将工作簿 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
正如我 运行 下面的用户窗体代码一样,我在主子中将 old_chosen 变量设置为空。似乎当我在 运行s 之后关闭用户窗体时,没有任何内容被存储。在我关闭用户窗体后是否有保存该变量的线索?
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但没有存储值:
Public Sub YourMacro(vWorkbookName As String)
Dim old_chosen As String
old_chosen = Me.ComboBox1.Value
MsgBox "You choose: " & Workbooks(vWorkbookName).Name
End Sub
您已在 procedure level 声明了变量,因此在用户窗体关闭后它不可见。
要使该变量可用于项目中的所有过程,请在其前面加上 Public
语句。插入一个模块并将其粘贴到那里
Public old_chosen As String
话虽如此,我建议将 Macro1
移动到用户窗体中,并在 module level
处声明变量后从那里处理代码
我将始终将工作簿 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
正如我 运行 下面的用户窗体代码一样,我在主子中将 old_chosen 变量设置为空。似乎当我在 运行s 之后关闭用户窗体时,没有任何内容被存储。在我关闭用户窗体后是否有保存该变量的线索?
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但没有存储值:
Public Sub YourMacro(vWorkbookName As String) Dim old_chosen As String old_chosen = Me.ComboBox1.Value MsgBox "You choose: " & Workbooks(vWorkbookName).Name End Sub
您已在 procedure level 声明了变量,因此在用户窗体关闭后它不可见。
要使该变量可用于项目中的所有过程,请在其前面加上 Public
语句。插入一个模块并将其粘贴到那里
Public old_chosen As String
话虽如此,我建议将 Macro1
移动到用户窗体中,并在 module level