来自另一个工作簿的组合框值

时间:2017-10-16 08:06:18

标签: excel-vba combobox vba excel

我正在以用户身份为组合框创建excel宏。我已成功在单个工作簿中创建。 这是我当前工作簿中的代码。

ComboBox1.RowSource = "Sheet1!G1:G" & Range("G" & Rows.Count).End(xlUp).Row

我现在要做的是,我想从另一个工作簿中获取我的组合框的值,让我们说在范围列G中的Project.xlsx。

知道代码会是什么样子吗?

1 个答案:

答案 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