• ベストアンサー

エクセルのユーザー関数が小文字に

WindowsXP Proffessional OFFICE2003の構成でエクセルを使用していてサービスパックも入れています。 自分でユーザー関数を作って使用しているのですが標準、モジュールのほうで大文字で関数を書いているのにワークシートのほうで使用すると勝手に小文字に書き換えられてしまいます。 標準モジュール一つだけ関数マクロがあるだけでシートのほうには何も記述していません。 ちょっと前まで標準モジュール内の関数を大文字に指定していても小文字に戻されてしまうので、わざとシートのほうに大文字で関数を書くと標準モジュール内の関数が自動的に変わって問題は解決したと思ったのですが、エクセル本体?の関数が変わっておりません。 関数そのものの動きは思った通りに動いています。 こういうときはみなさんはどうなさいますか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

>大文字で関数を書いているのに どういう意味?関数名のこと。ユーザー定義関数の中の変数名のこと? あるいはその他の名称?ステートメント?コメント? はっきり書いて。 >ワークシートのほうで使用すると勝手に 使用するのは何?目的語を明確に。関数(関数名のこと?)を=関数名()で 使っているのか。 実際の標準モジュールの関数定義の名前に換えられてませんか。 色んな名前の命名でVB系では大文字・小文字は区別されないと思ったほうが良い。 シート名、変数名など http://officetanaka.net/excel/vba/tips/tips93.htm http://www.accessclub.jp/vba/help/b02.html

Mikawa_ken
質問者

お礼

標準モジュール上では ×Public Function VLCNTIF(ParamArray FindStr() As Variant) As Variant ○Public Function VLCOUNTIF(ParamArray FindStr() As Variant) As Variant としております(していました)。 先ほどの補足の内容の修正です。 見苦しくてすみません。 ありがとうございました。

Mikawa_ken
質問者

補足

返事が遅れて申し訳ありません。 >どういう意味?関数名のこと。ユーザー定義関数の中の変数名のこと? ユーザー定義関数の「関数名」です。 シート上では大文字ででセルに =VLCOUNTIF としたつもりがすぐに勝手に =vlcountif に変えられてしまうのです。 標準モジュール上では Public Function VLCNTIF(ParamArray FindStr() As Variant) As Variant としております。 内容はプライバシーの問題があるので詳しく明かせませんが、例えて言うならVLookupで単価表の商品番号の価格を取得し、COUNTIFで商品の数を数えてかけ算したものを合計するみたいなことをするためにVBAでユーザー定義関数を作っていてVLCOUNTIFという関数を作っていたのです。 いろいろ実験してみたところ、例え「VL」を付けていたとしても「COUNTIF」の部分が問題だったようでVLCNTIFなどとしたら、普通に=vlcntif等と入力してもきちんと=VLCNTIFで修正されて事なきを得ました。 大変お騒がせしました。

関連するQ&A

  • EXCELのVBAで、あるワークシートでのみ使うユーザーフォームを作り

    EXCELのVBAで、あるワークシートでのみ使うユーザーフォームを作りました。そのワークシート上での定数や、プロシージャや関数をワークシートのモジュールに置いています。そして、その定数や関数などをユーザーフォームのイニシャライズなどで使いたいと思いますが、ユーザーフォームのモジュールはワークシートのモジュールとは別なので、使えません。他への影響を考えると、標準モジュールには、置くのは不適切だと思います。 特定のワークシート上でのみ使うユーザーフォームと、そのワークシートとで、共通の定数や関数などを使う方法は、あるのでしょうか。どのようにすればよいのでしょうか。

  • エクセルVBAで標準モジュールを保護したい

    エクセルのVBAマクロを使用したエクセルフィルがあります。 ユーザーは標準モジュールに記述した関数を使ってシートのマクロを変更してカストマイズできます。 ユーザーが標準モジュールを変更すると使用できなくなりますので、この標準モジュールだけをユーザーが変更できない、または見えないようにする方法をご教示いただけませんか。 よろしくお願いします。

  • VBAユーザー関数を外部から制御

    ExcelのVBAで、標準モジュールにワークシートで使うユーザー関数を記述しています。 ユーザー関数は、使い勝手を組み込みのワークシート関数と同様にするため、 Application.Volatile (True) で自動再計算するようにしており、数百カ所以上のセルに使用しています。 しかし、他のVBAモジュールでユーザー関数の戻り値が変わるような操作をすると、その都度 数百か所以上が再計算されるため、非常に時間がかかります。 ユーザー関数のApplication.Volatile (False) にすると瞬間で終了する処理が、数分かかる場合も あります。 他のVBAモジュールから、一時的にユーザー関数の処理内容を変更するようなことは可能でしょうか。

  • エクセルのユーザー定義関数で(VBA)

    エクセルのVBAで、セルに「=SheetName」と書き込めば、その関数を書き込んだセルが属するシート名をセルに代入さるようなユーザー定義関数を作りたいと考えています。 で、標準モジュールに Public Function SheetName(test) SheetName = ????? End Function と、書き込んでふと止まりました。 ユーザー定義関数を書き込んだシートの名前ってどうやって取得すればいいのでしょうか?VBでいうSenderみたいなのってあるんでしょうか? どなたか?詳しい方教えて頂けないでしょうか? 宜しくお願いいたします。

  • Excelに関数使用を調べる方法

    こんばんは、 教えてください。 Excelのワークシートに 関数が使用されているかを 確認する方法は ありますか? マクロでしたら、「マクロの表示」すれば 確認できると思うんですが、 関数はセルを1つづつ 確認しなければ ならないのでしょうか? 短時間に確認できる方法は ございますか?

  • EXCELでユーザー定義関数を使用するには

    EXCELでユーザー定義関数を使用するにはどうしたらいいのでしょう。 functionを定義して、ワークシートで使用しても、#NAMEエラーが出てしまいます。

  • Excelの関数について

    ワークシート1(工程参照)とワークシート2(オプション参照)の2つのワークシートがあり、そのいずれにも機番と言う項目があります。(P057VD152のように記載されています。) ワークシート1(工程参照)にワークシート2(オプション参照)の機番を貼り付けて、その2つのセルを比較し同じ機番のみを抽出したいのですが、Excelの関数を使用して出来るでしょうか。 Excelの関数については最近、本を購入して多少読んだ程度です。 説明がうまく出来ないのですが、宜しくお願いします。

  • エクセルVisualBasicEditer上で文字を検索すると全角文字が化ける!

    質問の書きかたが悪かったせいか、回答を得られませんでしたので質問を書き直しました。 使用環境はWindowaXP、エクセル2003です。 エクセルのVisualBasicEditer画面上で、標準モジュールに記載した文字を検索しようとすると、どういうわけか全角文字が化けるのです! 検索文字列を入力する欄で、入力した文字(普通に入力されます)を、エンターキーで確定しようとすると文字化けしてしまいます。 たとえば、「開始」という文字列を入れて確定させると、「且」という字に、「終了」と確定させると、なんと「女」というまったく違う字に勝手に化けてしまうのです。 英数文字は大丈夫なのですが。 モジュール上にプロシージャーを書き込む場合はそんなことは起きません。あくまでモジュール上の文字列を検索する場合だけです。 ワークシート上の文字列検索では何ら問題ありません。 いったい、何が原因でこうなるのでしょうか?

  • エクセルの関数

    エクセルでワークシート名の一部をセルに挿入させるには、どの関数を使用したらよいのでしょうか? 教えて下さい。

  • ユーザログインでエクセルのVBAのモジュール実行できない

    こんにちは windows XP proを使用しています。 アドミニ権限でoffice2007をインストールし、アドミニ権限でエクセルのマクロを実行すると問題なく処理されるのですが、ユーザ(制限ユーザ)ログインをして同じ エクセルのファイル(マクロ付き)を起動すると「モジュールがありません」とメッセージが表示されて、シートだけ状態となってしまいます。  ただ、ユーザ(制限ユーザ)ログインでエクセル上でマクロを作成すれば実行できますが、これを保存して再度開くと「モジュールがありません」となってしまいます。 ユーザ(制限ユーザ)ログインでマクロ実行したいので解決策があれば教えてください。よろしくお願いします。