【问题标题】:VBA: VLookup between two workbooksVBA:两个工作簿之间的 VLookup
【发布时间】:2015-06-03 15:53:32
【问题描述】:

我想知道是否有人可以帮助我。我创建了一个带有 3 个组合框的用户表单。组合框 1 和 2 列出所有打开的工作簿。 Combobox 3 列出了 Combobox 2 中的工作表。我现在想运行 Vlookup。查找值是每个单元格中的值(在本例中为产品代码),从 D9 开始到 Combobox2 的第一个工作表的 D 列中具有值的最后一个单元格。查找范围将是(“A5:S###”[行数因文件而异]”)。 Vlookup 公式应位于 Combobox2 值的第一个工作表的 I 列中,从“I9”开始循环遍历 I9 中的每个单元格,直到查找 D9 中的所有代码。 我不断收到错误,主要是“运行时错误'9'”:下标超出范围。这是我的代码。

Option Explicit

Private Sub CancelButton_Click()
    Stopped = True
    Unload Me
End Sub

Private Sub ComboBox1_Change()
Dim ScheduleA As Workbook
Dim Termset As Worksheet
Set ScheduleA = Workbooks(Me.ComboBox1.Value)
  With Me.ComboBox3
  For Each Termset In ScheduleA.Worksheets
            .AddItem Termset.Name
    Next Termset
    End With
End Sub


Private Sub FillACDButton_Click()
    Dim ACDRebateInfo As Worksheet
    Dim lastRow As Long
    Dim NewRebate As Single
    Dim NewRebateType As String
    Dim LookUp_Range As Range
    Dim ActionCode As String
    Dim ACD_NewRebate As Range
    Dim ACD_NewRebateType As Range
    Dim ACD_ActionCode As Range
    Dim SCC As Range
    Dim Cell As Range
    Set ACDRebateInfo = Workbooks(Me.ComboBox2.Value).Worksheets(1)
    Set ACD_NewRebate = ACDRebateInfo.Range("I9:I500")
    Set ACD_NewRebateType = ACDRebateInfo.Range("J9:J500")
    Set ACD_ActionCode = ACDRebateInfo.Range("B9:B500")
    Set LookUp_Range = Worksheets(Me.ComboBox3.Value).Range("A5:S400")
    Set SCC = ACDRebateInfo.Range("D9:D230")
    With ACDRebateInfo
    For Each Cell In ACD_ActionCode
    ActionCode = Application.WorksheetFunction.VLookup(SCC, LookUp_Range, 17, False)
    Next Cell
    End With
    Unload Me
End Sub



Private Sub UserForm_Initialize()
    Dim wkb As Workbook
        For Each wkb In Application.Workbooks
            Me.ComboBox1.AddItem wkb.Name
            Me.ComboBox2.AddItem wkb.Name
    Next wkb
End Sub

【问题讨论】:

  • 我忘了提到用户窗体与我要运行 VLookup 的文件位于单独的工作簿中

标签: vba excel combobox


【解决方案1】:

不确定这是您的问题,但这段代码没有意义:

For Each Cell In ACD_ActionCode
    ActionCode = Application.WorksheetFunction.VLookup(SCC, LookUp_Range, 17, False)
Next Cell

您正在循环操作代码,但未使用 Cell 变量

【讨论】:

  • AnalystCave.com 非常感谢您的回复。你明白我想要做什么吗?我正在循环操作代码但不使用单元格变量是什么意思。本质上,来自 Combobox 2 的工作簿是由我使用的合同管理系统生成的上传模板,用于允许对项目进行更改(价格、回扣)。所以我试图将所有相关数据(操作代码、回扣值、回扣类型)从作为 Combobox3 值/选择的工作表中提取到模板中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多