和風スパゲティのレシピ

日本語でコーディングするExcelVBA

Function名に句読点を使うとシート上で呼べなくなる

知らずに落ちると抜け出せなくなるVBAの落とし穴です。

  • Functionプロシージャ名に句読点を使ったら、ワークシート上で呼び出すと#NAMEと表示されてしまう。

ことにお悩みの方は、この落とし穴に落ちていないかご確認ください。



読点「、」と句点「。」にはExcelの補完機能があり、

=SUM(A1、A2)

は自動でSUM(A1,A2)に、

3。1

は自動で3.1に、それぞれ変換されます。


読点「、」とカンマ「,」、句点「。」とピリオド「.」は、
Excel(というかOffice全体)内で相互対応するように組まれていますね。


この自動変換が原因なのかは定かではないのですが、
Functionプロシージャの名前に句読点を使用すると、
ワークシート上でユーザー定義関数として呼び出せなくなります。

※ 普通にVBA上でマクロとして使用する分には問題ありません。


私はこの現象に、

Function JISカナは全角に、英数字は半角に

というユーザー定義関数を作ったときに気づいたのですが、

JIS関数の選択肢

このように選択肢にはしっかり出てきて、
本家JIS関数と選んで使えるようになったと見せかけて、
どうやっても「#NAME」が表示されてしまいダメでした。


根本的な解決策は多分ありませんので、
Function名には句読点の使用を我慢しましょう。


日本語は助詞「てにをは」が非常に優秀な言語ですので、

Function JISカナは全角に英数字は半角に

でも十分、文の区切りはわかると思います。


実際に今使っているこの関数名は、
「よく考えたらJISに[全角に]って意味がすでにあるじゃん」
ってことに気づいて、

Function JISカナASC英数字

という素晴らしい関数名に終着しております。



ちなみに小ネタですが(そもそもこの記事自体がネタですが)、

Function名に全角数字は使えず、勝手に半角ににされるのと一緒で、
句読点もよく見ると半角に自動で変換されます。


呼び出すときに全角で入力しても自動変換してくれますので、
別に半角で入力しなければいけないわけではないですけどね。


また、この現象は句読点のみの現象です。

記号は普通に使えますので、①②③などは使用できますし、

Function カナ→全角_英数字→半角

みたいに「→」も使えます。


使う意味がない句読点と違って「→」は普通に見やすくて便利なので、
気に入ったら使ってみてください。



この記事のカテゴリを「VBAの落とし穴」と「雑談」どっちにしようか迷ったのですが、こんな罠でも引っかかる人は(現にここにも)いると思うので、落とし穴カテゴリに入れてみました。


こんなん引っかかるやつおらんやろm9(^Д^)とか思った人は、
10秒以内にこの関数を英訳してください↓

Function カナは全角に英数字は半角に