我正在以用户身份为组合框创建excel宏。我已成功在单个工作簿中创建。 这是我当前工作簿中的代码。
ComboBox1.RowSource = "Sheet1!G1:G" & Range("G" & Rows.Count).End(xlUp).Row
我现在要做的是,我想从另一个工作簿中获取我的组合框的值,让我们说在范围列G中的Project.xlsx。
知道代码会是什么样子吗?
答案 0 :(得分:0)
您只需要在方括号中为工作簿名称添加前缀,但如果您只是:
ComboBox1.RowSource = "[Project.xlsx]Sheet1!G1:G" & Range("G" & Rows.Count).End(xlUp).Row
然后这不起作用,因为您没有限定要使用的Range
(例如,在Project工作簿的某个工作表中的那个)。
以下代码将在项目工作簿的Sheet1
中找到G列中的范围,并将值分配给ComboBox
中的UserForm
:
Option Explicit
Private Sub UserForm_Initialize()
Dim wbExternal As Workbook '<-- the other workbook with the data
Dim wsExternal As Worksheet '<-- the worksheet in the other workbook
Dim lngLastRow As Long '<-- the last row on the worksheet
Dim rngExternal As Range '<-- range of data for the RowSource
Set wbExternal = Application.Workbooks("Project.xlsx")
Set wsExternal = wbExternal.Worksheets("Sheet1") '<-- change to your sheet if required
lngLastRow = wsExternal.Range("G" & wsExternal.Rows.Count).End(xlUp).Row
Set rngExternal = wsExternal.Range("G1:G" & CStr(lngLastRow))
ComboBox1.RowSource = rngExternal.Address(External:=True)
End Sub