Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAのエラーについて)

VBAのエラーについて

このQ&Aのポイント
  • Excel VBAのコードで特定の関数を追加するとエラーが発生する問題について質問します。
  • VBA初心者ですが、コードにleft関数を追加したところ「sub または function が定義されていません」というエラーメッセージが表示されます。
  • 同様のエラーが発生しないコードも試しましたが、それでもエラーは解消されません。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

直接の間違い箇所のその1は、 間違い: Vlookup(… 正しくは: Application.Vlookup(… です。 しばしば間違いやすい個所ですが、使いたい「Vlookup」の前に直接Application.を修飾して、つながりを明示してやらないとご覧になったエラーになります。 次の間違っている箇所その2は、 間違い: Application.Left(… 正しくは: Left(Application.Vlookup(… なんでもかんでも「関数はApplication.関数名」のように勘違いしてはいけません。(その割にVlookupの前に忘れてた訳ですが) そもそも「Application.Vlookup」のような省略(手抜き)記法を覚えてしまったのが間違いの始まりだったかもしれませんが、これは正確には Application.Worksheetfunction.Vlookup(… のように書きます。 Applicationの中にまずWorksheetFunctionという「ワークシート関数を特にマクロの中でも使う」ためのメンバがあり、それに含まれているVlookupという関数を使います、という意味です。 で、前振りが長くなりましたが、ExcelVBAで使うLeft関数は、WorksheetFunctionの中にはなくて、VBAオリジナルのLeft関数になります。つまりワークシート関数のLeft関数をVBAの中で使っているのではありません。そもそもWorksheetFunctionの中には、VBAで用意されているLeft関数などは、含まれていません。こういったことは、VBE画面で「オブジェクトブラウザ」と使い、WorksheetFunctionのメンバを確認してみることで判ります。 さらに。ちなみに Application.Left と書くと、これはLeft関数じゃなく、エクセルウィンドウの左端の位置を取得するという、全く意味の違う命令としてLeftが作動します。 こういうこともまた、オブジェクトブラウザで確認することができます。

rihitomo
質問者

お礼

できました!ありがとうございます! >そもそも「Application.Vlookup」のような省略(手抜き)記法を覚えてしまったのが間違いの始まりだったかもしれません まったくそのとおりで、お恥ずかしい限りです。 きちんと構文の意味を考えて組むようにします!

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • suzukikun
  • ベストアンサー率28% (372/1325)
回答No.1

Range("i23").Value = Application.Left(VLookup(ThisWorkbook.Worksheets("aaa").Range("b5"), ThisWorkbook.Worksheets("data").Range("a2:b7"), 2, 0), 2) のVLookupに Application. を足せば良いのでは?

すると、全ての回答が全文表示されます。

関連するQ&A