
こんにちは。Excel VBAで「worksheetFunctionクラスのVlookupプロパティを取得できません」というエラーが発生してしまっております。
以下構文のどこかおかしなところをご指摘いただけないでしょうか。よろしくお願いします。
For i = 2 To Workbooks("WWW.xlsm").Worksheets("XXX").Cells(Rows.Count,8).End(XlDown).Row
ActiveSheet.Cells(i,23).value = Application.WorksheetFunction.Vlookup(ActiveSheet.Cells(i,8),Workbooks("YYY.csv").Worksheets("ZZZ").Range("A2:C1000"),3,False)
CellsとRangeが混じっていると問題なのでしょうか。
VBA素人にもかかわらずコード修正を求められており、参っております。。
どなたか詳しい方、アドバイスをお願いします。。
No.3ベストアンサー
- 回答日時:
No2です。
連投失礼。
No1様のご指摘にあるように
>Cells(Rows.Count,8).End(XlDown).Row
は、常にその列の最終行(=1048576行)を返しますので、2行目以降全ての行に渡ってループすることになっています。
(エラーにはなりませんが、現実的な処理としてははなはだ疑問の処理です)
その結果として、空白セルを検索値として検索していてLOOKUPでエラーが発生しているものと想像されます。
(ご質問文でのエラーが2行目都の説明だったので、見落としました)
No2の処置を行えばエラーは出なくなりますが、ループが列全体なので、列全体にエラー表示が表示されることになります。
No1様の回答にあるように、ループの範囲も見直してください。
No.2
- 回答日時:
こんばんは
>「worksheetFunctionクラスのVlookupプロパティを取得できません」
>というエラーが発生してしまっております。
完全一致で検索していますので、恐らく、検索値に一致するものが見つからないということだと思います。
(シート関数の場合に、エラー表示されるのと同様です)
対処としては、Lookup関数を使う前に存在を確認する(CountifやFindで)か、あるいは、そのままに対してエラー処理を加えるなどでしょうか。
以下は、エラー処理を加える例です。
(検索値がない場合にどうするのか不明なので、適当にしてあります)
変数宣言をしておいて
Dim v As Variant
ご提示の2行目を以下に変更
On Error Resume Next
v = WorksheetFunction.Vlookup(ActiveSheet.Cells(i,8),Workbooks("YYY.csv").Worksheets("ZZZ").Range("A2:C1000"),3,False)
If Err.Number <> 0 Then v = "エラーだよ"
On Error GoTo 0
ActiveSheet.Cells(i,23).value = v
ではいかがでしょうか?
>CellsとRangeが混じっていると問題なのでしょうか。
>VBA素人にもかかわらずコード修正を求められており、参っております。
一度修正できたりすると、以後、もっと様々なことを求められることになると想像しますけれど、大丈夫なのでしょうか?
No.1
- 回答日時:
こんばんは
明らかに問題を生じる箇所は
Rows.Count,8).End(XlDown).Row です
Rows.Count 一番下の行からXlDownは一番下の行です
Rows.Count, 8).End(xlUp).Rowとしてみてください
また、ActiveSheet.はWorkbooks("WWW.xlsm").Worksheets("XXX")を示しているように思いますので オブジェクト変数にセットした方が分かり易いのでは無いかと思います
更にVlookup関数で見つからなかった時の対策も必要と思います
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
vbaのvlookup関数エラー原因を教えていただけないでしょうか。
Visual Basic(VBA)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
-
4
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
5
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
6
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
7
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
8
UserForm1.Showでエラーになります。
工学
-
9
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
10
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
11
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
12
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
13
VBAで文字列を数値に変換したい
Excel(エクセル)
-
14
マクロの「Rangeメソッドは失敗しました’Globalオブジェクト」エラーの解決方法について
Excel(エクセル)
-
15
EXCEL VBAでWORKDAY関数を使用したい
Excel(エクセル)
-
16
matchプロパティを取得できません…と出ます。
PowerPoint(パワーポイント)
-
17
ExcelのVlookup関数で一致した文字のセルの番地を取得する方法
その他(Microsoft Office)
-
18
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
19
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
20
Rangeメソッドは失敗しました。globalオブジェクトについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「Columns("A:C")」の列文字を...
-
worksheetFunctionクラスのVloo...
-
エクセルのVBAの標準モジュール...
-
Excelでフィルタをかけると警告...
-
テキストボックス中の文字列の...
-
オブジェクト変数の取得について
-
UserForm1.Showでエラーになり...
-
Excel VBAでIEにアクセスするプ...
-
実行時エラー 3265「要求された...
-
EXCEL VBA オートシェイプナン...
-
VBAで別のシートに図形描画
-
PowerPointVBAでスライドマスタ...
-
VB6.0上でExcelオブジェクトを生成
-
CreateObjectとGetObjectの違い
-
Visual Basic.NETのエラー("オ...
-
VBAで Set wb = Sheets(1).Cop...
-
VBScriptからDLL参照設定したい
-
コンパイルエラーの対処がわか...
-
[C#]static void 関数内でthis
-
AccessVBAで「dim dbs as datab...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
テキストボックス中の文字列の...
-
エクセルのVBAの標準モジュール...
-
Excelでフィルタをかけると警告...
-
実行時エラー 3265「要求された...
-
上下の位置揃えについて
-
ExcelVBAでのNZ関数について
-
VBAで既に開いている別アプリケ...
-
VBAで Set wb = Sheets(1).Cop...
-
AccessVBAで「dim dbs as datab...
-
EXCEL VBA オートシェイプナン...
-
オブジェクト変数またはWITHブ...
-
[VBA]CDOメッセージ送信エラー
-
エクセルマクロエラー「'Cells'...
-
findメソッドの変数について
-
オブジェクトが見つかりません
-
ある文字列が全て数字であるか...
-
オブジェクト変数の取得について
-
CreateObjectとGetObjectの違い
おすすめ情報