[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.