『Applicationの付け方』(nobuhiko) お世話になります。 いつもありがとうございます。 解答の程、宜しくお願い致します。 Match の場合、Application.Match としています。 この場合は、エラーを判断できるとして、使用しています。 m=Match(・・・・・ で始めれば、エラーが起きます。 m=Application.Match(・・・・・ で始めれば、エラーが起きません。 Replace の場合、 s=Replace(・・・・・ で始めれば、エラーが起きません。 s=Application.Replace(・・・・・ で始めれば、エラーが起きます。 ですが、Trimは、どちらも処理してくれます。 これは、どういう考え方をすれば、 これから先、しっかりと書いていけるのでしょうか? どうか、宜しくお願い致します。 ---- ワークシート上で使える関数とVBAで使える関数を区別すること。 Applicationを付けて使うのはワークシート上で使える関数をVBAで使う場合。 MATCHはワークシート関数で、VBAには同じ名前の関数がないのでApplicationを付けないとエラーになる。 Replace、Trimはワークシート関数にもVBAの関数にも同じ名前の関数があるがReplaceはワークシート関数とVBA関数では引数の位置や結果が違うので 指定する引数が違っていればエラーがでる。 (今回の場合はVBAのReplaceのつもりでワークシート関数のReplaceの引数指定をしたのだろう) Trim関数は引数は同じだが結果は違う。 VBAのヘルプ・ワークシートのヘルプなどで各関数がどちらの関数で引数は何か、結果はどうなるかを調べること。 追記 ワークシート関数の全てがVBAで使えるわけではないので注意。 (ヘルプに記載がある) (ねむねむ) ---- ねむねむ様、ありがとうございました。 もう一点だけご教示ください。 >Replaceはワークシート関数とVBA関数では引数の位置や結果が違うので >指定する引数が違っていればエラーがでる。 >(今回の場合はVBAのReplaceのつもりでワークシート関数のReplaceの引数指定をしたのだろう) これなのですが、 Function Replace_e() On Error GoTo ERR1 Dim s1 As String s1 = "999 999" s1 = Application.Replace(s1, " ", "") Replace_e = True Exit Function ERR1: Replace_e = False End Function VBA関数におけるTESTで、これはあっていますか? すみません。宜しくお願い致します。 ---- Application.ReplaceのReplaceはワークシート関数のReplace関数なのだからワークシートの(VBAでははない)ヘルプで引数を確認。 >REPLACE(文字列,開始位置,文字数,置換文字列) >文字列 >置き換えを行う文字列を指定します。 >開始位置 >置換文字列と置き換える先頭文字の位置 (文字番号) を数値で指定します。 >文字列の先頭文字の位置が 1 になります。 >文字数 >置換文字列と置き換える文字列の文字数を指定します。 >置換文字列 >文字列の一部と置き換える文字列を指定します。 それこそ" "を""に置き換えたいのであればVBA関数のReplace関数を使って Replace(s1, " ", "") で。 なお、 >この場合は、エラーを判断できるとして、使用しています。 これは検索値がない場合に WorksheetFunction.Match では実行時エラーとなるのが Application.Match だとエラー値を返してくれるという事ではないのか? (ねむねむ) ---- ねむねむ様、 頭が悪く本当に申し訳御座いません。 >WorksheetFunction.Match >では実行時エラーとなるのが >Application.Match >だとエラー値を返してくれるという事ではないのか? はい。そうです。言葉足らずで、すみません。 ここまで来て、怒られそうで大変申し訳ないのですが、 application. と worksheetfunction. は、同じだけれども、 実行時エラーとなるか、ならないかの違いなのでしょうか? 本当に愚問ですみません。 宜しくお願い致します。 (nobuhiko)すみません。名前を書くのを忘れていました。 ---- WorksheetFunction形式はExcel97で追加されたもので95以前はApplication形式を使っていた。 で、Application形式時には返り値にエラーを返していたのがWorksheetFunction形式では実行時エラーになるようになった。 なお、Application形式はExcel95以前と互換性を保つために残されている。 (ねむねむ) ---- ねむねむ様、本当に有難うございます。 私にとっては、とてもとても貴重なお言葉でした。 歴史なのですね。 やはり、長くやっている方がすごいのですね。 これからも、自分なりに精進してまいります。 本当に有難うございました! (nobuhiko)