- ベストアンサー
Replace関数について
- Replace関数についての質問です。マクロを実行する際にReplace関数が正常に動作する理由と、なぜWorksheetFunctionが必要ないのかについて説明してください。
- マクロ1のReplaceは関数ではなく、メソッドやステートメントであるのか疑問です。マクロ2ではWorksheetFunctionを使うとエラーが発生する理由も教えてください。
- Replace関数についての疑問です。マクロ1ではReplaceを関数として使用していますが、マクロ2ではWorksheetFunction.Replaceを使用する必要があります。この違いについて詳しく説明してください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> なぜReplaceは関数なのに、 > WorksheetFunction.がいらないのでしょうか? Replaceはワークシート関数ではなく、VBA関数だからです。 str = Replace(str, "c", "a") を省略せずに記述すると、 str = VBA.Replace(str, "c", "a") となります。 ワークシート関数はExcelのセルの式で使用するための関数で、Excel専用の関数です。 VBA関数は、VBAが持っている関数で、Excel以外のOfficeアプリ(Word, Accessなど)でも使用できます。
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
マクロ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関数になります。
お礼
ご回答ありがとうございました。
お礼
ご回答ありがとうございました。