使用Sub或Function未定义错误循环INDEX-MATCH VBA

我有一个循环INDEX-MATCH VBA,我试图debugging,因为它不断抛出一个子或函数未定义的错误。 用我已经在这个网站上find的东西,我能够检查我的参考,但我似乎仍然缺less一些东西(“解算器”被选中)。 在这一点上,一双额外的眼睛将是最有帮助的!

Private Sub Looping_Index_Match() Application.ScreenUpdating = False Dim rng As Range Dim cell as range Dim IndexRange as range Dim MatchRange as range Set rng = ActiveSheet.Range("D42:D241") With Workbook("WorkCenter.xlsm").Sheets(ComboBox1.Value) Set IndexRange=Range(.Range("M2"),.Range(“M2”).end(xlup)) Set MatchRange= Range(.Range("L2"),.Range(“L2”).end(xlup)) End With For Each cell In rng Cell.Offset(0,1)=Application.WorksheetFunction.Index(IndexRange,Application.WorksheetFuntion.Match(cell,Application.WorksheetFunction.Match(cell,MatchRange,0)) Next Application.ScreenUpdating=True End Sub 

注意:有两个工作簿参与。 来自“工作中心”工作簿列M的数据正被检索并input到“摘要”工作簿中,与列L中的序列号相匹配。

 Private Sub CommandButton1_Click() Dim yoursheet As Worksheet Dim yourworkbook As Workbook Set yourworkbook = Workbooks("Book3.xlsx") Set yoursheet = yourworkbook.Sheets(ComboBox1.Value) With yoursheet Set IndexRange = Range(.Range("M2"), .Range("M2").End(xlDown)) Set MatchRange = Range(.Range("L2"), .Range("L2").End(xlDown)) End With ActiveWorkbook.ActiveSheet.Range("e42").Formula = "=index([" & yourworkbook.Name & "]" & yoursheet.Name & "!" & IndexRange.Address & ",match(d42" & ",[" & yourworkbook.Name & "]" & yoursheet.Name & "!" & MatchRange.Address & ",0))" ActiveWorkbook.ActiveSheet.Range("e42:e241").FillDown ActiveWorkbook.ActiveSheet.Range("e42:e241").Copy ActiveWorkbook.ActiveSheet.Range("e42:e241").PasteSpecial xlValues Application.CutCopyMode = False Unload UserForm1 End Sub Private Sub UserForm_Initialize() ComboBox1.AddItem "Sheet2" End Sub 

我将分享一个我构build的快速示例:我做了一个简单的用户窗体,带有1个combobox和一个命令button。 到combobox我只加了第一张纸的名字。 命令button调用另一个存储在独立模块中的macros调用Looping_Index,传递combobox的值

 Private Sub CommandButton1_Click() Call Looping_Index(UserForm1.ComboBox1.Value) End Sub Private Sub UserForm_Initialize() ComboBox1.AddItem "Sheet1" End Sub Sub Looping_Index(hoja As String) Sheets(hoja).Activate Unload UserForm1 End Sub 

这是一个关于如何使用用户表单和传递值的简单例子。 希望能帮助到你

下面的代码是为我工作(相同的模块):

 Private Sub CommandButton1_Click() Dim yoursheet As Worksheet Set yoursheet = Sheets(ComboBox1.Value) With yoursheet Set IndexRange = Range(.Range("M2"), .Range("M2").End(xlDown)) Set MatchRange = Range(.Range("L2"), .Range("L2").End(xlDown)) End With ActiveSheet.Range("e42").Formula = "=index(" & yoursheet.Name & "!" & IndexRange.Address & ",match(d42" & "," & yoursheet.Name & "!" & MatchRange.Address & ",0))" ActiveSheet.Range("e42:e241").FillDown Unload UserForm1 End Sub Private Sub UserForm_Initialize() ComboBox1.AddItem "Sheet2" End Sub