我不明白爲什麼我的使用AdvanceFilter的UDF在調試模式(F8)下工作但提供了錯誤9 - 下標超出範圍時執行在正常模式下。就像在運行模式下執行(??)太快一樣,不是一步一步的。我UDF爲了更精確的包含Advancedfilter語句的UDF中的Excel 2013-VBA運行時錯誤9但在調試模式下正常
代碼示例(gAitemCT是用戶定義的類型):
Public Function fG_PasteCTLinesOnSheetTmpFilteredDataset(_
ByRef gL_CTLine_P As gAitemCT, ByRef intNbOcc As Integer) As String
Dim sRet As String, sMsg As String
Dim iLoop As Integer
Dim iNbColMax As Integer
Dim lNbRowMax As Long
Dim sColWidth As Variant
Dim rngInput As Range, rngOutput As Range
Dim rngCriteria1 As Range
Dim varTmp As Variant
Dim iArrDime As Integer
sRet = "OK"
iLoop = 0
On Error GoTo Diso
'>> Constituer le Carré de datas <<
Worksheets(G_sNameSRCPO).Select
With Worksheets(G_sNameSRCPO)
'>>
lNbRowMax = .Cells(.Rows.Count, 5).End(xlUp).Row
iNbColMax = .Cells(1, .Columns.Count).End(xlToLeft).Column
'>>
End With
Worksheets(G_sNameSRCPO).Select
'>> Defining INput range <<
Set rngInput = Worksheets(G_sNameSRCPO).Range("A1").Resize(lNbRowMax,iNbColMax)
varTmp = salesWksheet.Range(Cells(1, 1)).Value
'> Copy Header <
'>> Setting up Criteria range(s) <<
varTmp = Worksheets(G_sNameSRCPO).Cells(1, 1).Value
Worksheets(G_sNameReferenceS).Select
Worksheets(G_sNameReferenceS).Cells(1, 2).Select
Worksheets(G_sNameReferenceS).Cells(1, 2).Value = varTmp
ThisWorkbook.Save
'**
If (gL_CTLine_P.GsfPO <> 0) Then
'>>
'curWBook.Sheets("dataReferences").Activate
Worksheets(G_sNameReferenceS).Cells(2, 2).Select
Worksheets(G_sNameReferenceS).Cells(2, 2).Value = gL_CTLine_P.GsfPO
Set rngCriteria1 = Worksheets(G_sNameReferenceS).Cells(1, 2).Resize(2, 1)
'>>
Else
End If
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'>> Setting up the OUTput range <<
Worksheets(G_sNameCTcurrentS).Select
Set rngOutput = Worksheets(G_sNameCTcurrentS).Range("A1")
'>>>>>>>>>>>>>>>>>>>>>>>>>
'>> Pasting the Result <<<
Worksheets(G_sNameSRCPO).Select
rngInput.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=rngOutput, CriteriaRange:=rngCriteria1
Worksheets(G_sNameCTcurrentS).Select
Veloma:
'>>
Set rngInput = Nothing
Set rngCriteria1 = Nothing
Set rngOutput = Nothing
'>>
intNbOcc = iArrDime
'>>
fG_PasteCTLinesOnSheetTmpFilteredDataset = sRet
Exit Function
'**
Diso:
Beep
Beep
sMsg = "PasteCTLinesOnSheetTmpFilteredDataset-ERR ::" & Err.Number & ":: - " & Err.Description
Debug.Print sMsg
sRet = sMsg
Resume Veloma
End Function
感謝您的任何幫助。
你能否註釋掉你的「On error goto DISO」命令?然後運行它並查看哪條線路導致錯誤。 –
您好, 觸發錯誤的行是: 工作表(G_sNameReferenceS)。選擇 工作表(G_sNameReferenceS).Cells(1,2)。選擇 工作表(G_sNameReferenceS).Cells(1,2)。價值= varTmp 這些行將過濾的標題和值複製到另一個表上,而不是在應用了AdvancedFilter的同一頁上。 – botakelymg
我記得這些代碼在調試模式下運行... 非常令人不安 – botakelymg