AdvanceFilterを使用しているUDFがデバッグモード(F8)で動作しますが、実行時にエラー9ノーマルモードです。あまりにも速い実行時(?)とランタイムモードではなく、一歩一歩。より精度のための私のUDFのAdvanced Filterステートメントを含む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
は、任意の助けてくれてありがとう。
"エラー時にDISOを実行する"コマンドをコメントアウトできますか?次にそれを実行して、エラーを引き起こす行を確認します。 –
こんにちは、エラーをトリガ 線である: ワークシート(G_sNameReferenceS).Select ワークシート(G_sNameReferenceS).Cells(1、2).Select ワークシート(G_sNameReferenceS).Cells(1、2).Valueの= varTmp これらの行は、フィルタリングのタイトルと値をコピーしますが、AdvancedFilterが適用されているものと同じではなく、別のシートにコピーされます。 – botakelymg
これらのコードは、デバッグモードで動作することを思い出してください... 非常に混乱しています – botakelymg