0

セルの範囲で vlookup 関数を使用して、他のシートの値を検索しようとしています。ただし、「アプリケーション定義またはオブジェクト定義エラー」という実行時エラーが発生し続けます。

ActiveSheet.Range("$A$1", Selection.End(xlDown)).RemoveDuplicates Columns:=1, _
    Header:=xlYes
'In Summary Tab
Range("A1").CurrentRegion.Select
nRows = Selection.Rows.Count

' Places column headers in "Summary" tab
For iCounter = 2 To Sheets.Count
    Sheets(iCounter).Select
    Range("A1").CurrentRegion.Select
    nCols = Selection.Columns.Count
         For iColumn = 2 To nCols
            Sheets(iCounter).Select
                If (WorksheetFunction.IsNumber(Cells(2, iColumn)) = "TRUE") Then
                Cells(1, iColumn).Select
                Selection.Copy
                Sheets("Summary").Select
                ActiveCell.Offset(0, 1).PasteSpecial
                Application.CutCopyMode = False
                ActiveCell.Offset(1, 0).Select
                ActiveCell.Resize(nRows - 1, 1).Select
                Selection.Formula = "=vlookup(B2," & _
                    Range(sheets(icounter).selection).Address","& icolumn",false)"
                End If
        Next
Next

また、vlookup式をこれに編集してみました(他のすべては同じです):

                Selection = Application.WorksheetFunction.VLookup( _
                    "B2", Sheets(iCounter).CurrentRegion.Select, iColumn, False)

しかし、これによりエラー438「オブジェクトはこのプロパティまたはメソッドをサポートしていません」が発生します

これにvlookupを編集しようとしても、1004エラーが再び発生しました:

選択 = Application.WorksheetFunction.VLookup("B2",Sheets(iCounter).Range(Cells(1, 1), Cells(nCols, nRows)), iColumn, False)

4

2 に答える 2

0

追加してみてください:

On error resume next

スクリプトの上部。vlookup で一致が見つからない場合、エラーが返されます。

エラーが返された場合、スクリプトは停止します。

現在および最後の提案は、構文が異なるだけで本質的に同じですが、それが問題の原因だとは思いません。代わりに次のエラーを試してください。

于 2015-12-20T19:51:05.690 に答える
0

数式を特定の範囲に挿入しようとしているように見えます。Application.WorksheetFunction.VLookupは数式を挿入しません。通常の関数と同じように、サブ/関数に値を返すために使用されます。したがって、目標が一連の数式を挿入することである場合、一番上の例は正しいアプローチです。

そのコード行でエラーが表示される理由は、実際には範囲を参照していないためです。代わりにこれを試してください:

Selection.Formula = "=vlookup(B2," & Sheets(icounter).Name & "!" & _
                        Selection.Address & "," & icolumn & ",false)"

このコードは、シートの名前を呼び出し、感嘆符 ( !) を追加してから、選択範囲のアドレスを追加することに注意してください。

コードにいくつかのアンパサンド ( &) が欠けていたために、エラーが表示された可能性もあります。

.Select最後に、 、.Selection、およびの使用に注意してください.Activate。それらは VBA での役割を果たしますが、多くの頭痛の種になります。の使用を避ける方法の詳細については、Chris Neilsen によるこの回答と Siddharth Rout によるこの回答.Selectを確認してください。

于 2015-12-20T20:17:47.930 に答える