- ベストアンサー
エクセルのユーザー関数が小文字に
WindowsXP Proffessional OFFICE2003の構成でエクセルを使用していてサービスパックも入れています。 自分でユーザー関数を作って使用しているのですが標準、モジュールのほうで大文字で関数を書いているのにワークシートのほうで使用すると勝手に小文字に書き換えられてしまいます。 標準モジュール一つだけ関数マクロがあるだけでシートのほうには何も記述していません。 ちょっと前まで標準モジュール内の関数を大文字に指定していても小文字に戻されてしまうので、わざとシートのほうに大文字で関数を書くと標準モジュール内の関数が自動的に変わって問題は解決したと思ったのですが、エクセル本体?の関数が変わっておりません。 関数そのものの動きは思った通りに動いています。 こういうときはみなさんはどうなさいますか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>大文字で関数を書いているのに どういう意味?関数名のこと。ユーザー定義関数の中の変数名のこと? あるいはその他の名称?ステートメント?コメント? はっきり書いて。 >ワークシートのほうで使用すると勝手に 使用するのは何?目的語を明確に。関数(関数名のこと?)を=関数名()で 使っているのか。 実際の標準モジュールの関数定義の名前に換えられてませんか。 色んな名前の命名でVB系では大文字・小文字は区別されないと思ったほうが良い。 シート名、変数名など http://officetanaka.net/excel/vba/tips/tips93.htm http://www.accessclub.jp/vba/help/b02.html
お礼
標準モジュール上では ×Public Function VLCNTIF(ParamArray FindStr() As Variant) As Variant ○Public Function VLCOUNTIF(ParamArray FindStr() As Variant) As Variant としております(していました)。 先ほどの補足の内容の修正です。 見苦しくてすみません。 ありがとうございました。
補足
返事が遅れて申し訳ありません。 >どういう意味?関数名のこと。ユーザー定義関数の中の変数名のこと? ユーザー定義関数の「関数名」です。 シート上では大文字ででセルに =VLCOUNTIF としたつもりがすぐに勝手に =vlcountif に変えられてしまうのです。 標準モジュール上では Public Function VLCNTIF(ParamArray FindStr() As Variant) As Variant としております。 内容はプライバシーの問題があるので詳しく明かせませんが、例えて言うならVLookupで単価表の商品番号の価格を取得し、COUNTIFで商品の数を数えてかけ算したものを合計するみたいなことをするためにVBAでユーザー定義関数を作っていてVLCOUNTIFという関数を作っていたのです。 いろいろ実験してみたところ、例え「VL」を付けていたとしても「COUNTIF」の部分が問題だったようでVLCNTIFなどとしたら、普通に=vlcntif等と入力してもきちんと=VLCNTIFで修正されて事なきを得ました。 大変お騒がせしました。