
こんにちは。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)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
-
4
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
5
UserForm1.Showでエラーになります。
工学
-
6
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
7
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
8
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
9
VBAで文字列を数値に変換したい
Excel(エクセル)
-
10
matchプロパティを取得できません…と出ます。
PowerPoint(パワーポイント)
-
11
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
12
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
13
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
14
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
15
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
16
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
17
EXCEL VBAでWORKDAY関数を使用したい
Excel(エクセル)
-
18
VBAでEmpty値って何ですか?
Excel(エクセル)
-
19
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
20
マクロの「Rangeメソッドは失敗しました’Globalオブジェクト」エラーの解決方法について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
エクセルVBAで2つの画像を比較...
-
エクセルVBAでcode128のバー...
-
VBAで作成するメール(開封確認...
-
VBAについてです。 初心者です...
-
AccessVBAで「dim dbs as datab...
-
エクセルのVBAの標準モジュール...
-
VBAで既に開いている別アプリケ...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
エクセルVBAで配列内に空白デー...
-
インターネットショートカットICON
-
「オブジェクト変数または With...
-
オブジェクト変数の取得について
-
PowerPointVBAでスライドマスタ...
-
ACCESS activeXコンポーネント...
-
Excel VBA グラフを任意sheetに...
-
コンパイルエラーの対処がわか...
-
Excelでフィルタをかけると警告...
-
ある文字列が全て数字であるか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
PowerPointVBAでスライドマスタ...
-
エクセルのVBAの標準モジュール...
-
Excelでフィルタをかけると警告...
-
実行時エラー 3265「要求された...
-
テキストボックス中の文字列の...
-
VBAからPDFファイルにパスワー...
-
VBAで既に開いている別アプリケ...
-
Excel VBAでIEにアクセスするプ...
-
オブジェクトが見つかりません
-
ExcelVBAでのNZ関数について
-
エクセルVBAでcode128のバー...
-
WordにOLEで埋め込んだExcelでW...
-
AccessVBAで「dim dbs as datab...
-
エクセルマクロエラー「'Cells'...
-
エクセル エラー438
-
[VBA]CDOメッセージ送信エラー
-
VBAで作成するメール(開封確認...
-
VBScriptでファイルの日時順(降...
おすすめ情報