Excelでわからないことがあります。 VBAでVLOOKUPなどの関数を使う時、

Excel | Visual Basic66閲覧xmlns="http://www.w3.org/2000/svg">25

1人が共感しています

ベストアンサー

0

ThanksImg質問者からのお礼コメント

みなさん分かりやすく解説して頂きありがとうございます。 質問の仕方が下手ですみません…Activecell.formulaまできちんと入力すべきでした… セルに戻り値を返すか、式を入れるかの違いなんですね。 ありがとうございます!勉強になりました!

お礼日時:2021/11/26 17:55

その他の回答(2件)

1

ActiveCellでは無く、Applicationでしょうか? n = WorksheetFunction.VLookup(Range("A1").Value, Range("B:C"), 2, False) n = Application.VLookup(Range("A1").Value, Range("B:C"), 2, False) この二つの違いという事であれば、たとえばVLOOKUPで検索に失敗すると、 【変数に入れるだけの場合】 WorksheetFunction→「実行時エラー1004 WorksheetFunctionクラスの VLookup プロパティを取得できません。」 Application→何も起きません。 WorksheetFunctionはMatchもそうですけど、セル上で入力したらエラーになるような結果の場合、マクロでもエラーになってマクロが中断してしまいます。 では何も起きなかったApplicationの方ですが、 【メッセージで表示する場合】 n = Application.VLookup(~ MsgBox n 「実行時エラー13 型が一致しません。」 【セルに入力する場合】 n = Application.VLookup(~ Range("A2").Value = n A2に "#N/A" が入力される という挙動をします。 ちなみにWorksheetFunctionはExcel97からの機能です。 Application.関数 はそれ以前のバージョンの方法ですね。 下位互換の為、残しているんだと思われます。 ※廃止しちゃうと、それを使ってるマクロ全書き換えになってしまうので…。 身ての通り、エラーが出た時の挙動が WorksheetFunction だと親切です。 Application.~ の方は何故エラーになったのか分かりにくい、またはエラーになってるのに気付けないです。 ApplicationじゃなくてActiveCellで合ってますよって事なら、スルーしてくださいな。

1人がナイス!しています

1

>worksheetfunction VBAから、多くのExcel関数(SUMやMATCHなど)を使用する事ができます。 そのときに使われるオブジェクトです。 このオブジェクトを経由してExcel関数を起動します。 >Activecell Excelのアクティブなセルを取得するためのプロパティ。 https://www.relief.jp/docs/excel-vba-what-is-activecell.html

1人がナイス!しています