• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Replace関数について)

Replace関数について

このQ&Aのポイント
  • Replace関数についての質問です。マクロを実行する際にReplace関数が正常に動作する理由と、なぜWorksheetFunctionが必要ないのかについて説明してください。
  • マクロ1のReplaceは関数ではなく、メソッドやステートメントであるのか疑問です。マクロ2ではWorksheetFunctionを使うとエラーが発生する理由も教えてください。
  • Replace関数についての疑問です。マクロ1ではReplaceを関数として使用していますが、マクロ2ではWorksheetFunction.Replaceを使用する必要があります。この違いについて詳しく説明してください。

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

  • ベストアンサー
回答No.2

> なぜReplaceは関数なのに、 > WorksheetFunction.がいらないのでしょうか? Replaceはワークシート関数ではなく、VBA関数だからです。 str = Replace(str, "c", "a") を省略せずに記述すると、 str = VBA.Replace(str, "c", "a") となります。 ワークシート関数はExcelのセルの式で使用するための関数で、Excel専用の関数です。 VBA関数は、VBAが持っている関数で、Excel以外のOfficeアプリ(Word, Accessなど)でも使用できます。

zxc5463czx
質問者

お礼

ご回答ありがとうございました。

その他の回答 (1)

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

マクロ1で利用しているのは、エクセルVBAで用意されているreplace関数です。 F1キーを押してヘルプを確認してみると(オブジェクトブラウザで確認するのもお勧め) Replace(expression, find, replace[, start[, count[, compare]]]) という構文で利用すると説明があります。 マクロ2で利用しているのは、ワークシート関数のreplacです。 エクセル画面に戻り、関数ウィザードで関数のヘルプを確認してみると REPLACE(文字列,開始位置,文字数,置換文字列) のように使うと説明があります。 ついでにVBAに戻ってworksheetfunctionのreplaceのヘルプを見てみると、関数じゃなくメソッドだと書かれています。 ワークシート関数の計算例: =REPLACE("ABCDEFG",2,3,"Z") VBAのreplace関数とは、全く構文が違いますね。 VBAからWorksheetFunctionのreplaceを利用する場合も、この書き順でこの内容で引数を与えないと、当然エラーになります。 ちなみにVBAのreplace関数に相当するワークシート関数は、REPLACE関数じゃなくてSUBSTITUTE関数になります。

zxc5463czx
質問者

お礼

ご回答ありがとうございました。