“结束function”行上的Excel VBA 450错误

我得到一个错误450“错误数量的参数或无效的属性分配”。 错误发生在函数的最后一行,即“End Function”的最后一行。 我没有看到任何失踪的“结束如果”,所以我不知道是什么原因导致:

myDict = bpCreateDictionary("A", "B", 1, 10, "Sheet2", , "Ignore") 

哪个引用这个函数:

 Function bpCreateDictionary(ByVal KeyColumn As String, ByVal ValueColumn As String, _ Optional ByVal RowBegin As Long, Optional RowEnd As Long, _ Optional ByVal DataWorksheet As String = "Sheet1", _ Optional ByVal DataWorkbook As String, _ Optional ByVal HandleDuplicates As String, _ Optional ByVal KeepOpen As Boolean = False) As Dictionary Application.ScreenUpdating = False sCurrentActiveBook = ActiveWorkbook.Name sCurrentActiveSheet = ActiveSheet.Name Dim oDictionary As New Scripting.Dictionary Dim lLastRow As Long Dim lIncrementer As Long Dim vKey As Variant Dim vValue As Variant If Not DataWorkbook = "" Then oWorkbookName = bpGetFilenameFromPath(DataWorkbook) Workbooks.Open (DataWorkbook) Workbooks(oWorkbookName).Activate sCurrentActiveExternalSheet = ActiveSheet.Name End If If Not DataWorksheet = "" Then Worksheets(DataWorksheet).Activate End If If Not RowEnd = 0 Then lLastRow = RowEnd Else lLastRow = bpLastRow(KeyColumn) End If If RowBegin = 0 Then RowBegin = 1 End If For lIncrementer = RowBegin To lLastRow vKey = Cells(lIncrementer, KeyColumn) vValue = Cells(lIncrementer, ValueColumn) If HandleDuplicates = "Ignore" And oDictionary.Exists(vKey) Then 'Do Nothing and move to next row Else oDictionary.Add vKey, vValue End If Next lIncrementer Set bpCreateDictionary = oDictionary If Not oWorkbookName = "" Then If Not KeepOpen = True Then Worksheets(sCurrentActiveExternalSheet).Activate Workbooks(oWorkbookName).Close SaveChanges:=False End If End If Workbooks(sCurrentActiveBook).Activate Worksheets(sCurrentActiveSheet).Activate Application.ScreenUpdating = True End Function 

在最后一行“End Function”是debugging时发生错误的地方。 任何想法可能在这里发生?

就像你在function上所做的一样

 Set bpCreateDictionary = oDictionary 

你必须

 Set myDict = bpCreateDictionary("A", "B", 1, 10, "Sheet2", , "Ignore").