知らずに落ちると抜け出せなくなるVBAの落とし穴です。
- Functionプロシージャ名に句読点を使ったら、ワークシート上で呼び出すと#NAMEと表示されてしまう。
ことにお悩みの方は、この落とし穴に落ちていないかご確認ください。
読点「、」と句点「。」にはExcelの補完機能があり、
=SUM(A1、A2) |
は自動でSUM(A1,A2)に、
3。1 |
は自動で3.1に、それぞれ変換されます。
読点「、」とカンマ「,」、句点「。」とピリオド「.」は、
Excel(というかOffice全体)内で相互対応するように組まれていますね。
この自動変換が原因なのかは定かではないのですが、
Functionプロシージャの名前に句読点を使用すると、
ワークシート上でユーザー定義関数として呼び出せなくなります。
※ 普通にVBA上でマクロとして使用する分には問題ありません。
私はこの現象に、
Function JISカナは全角に、英数字は半角に
というユーザー定義関数を作ったときに気づいたのですが、
このように選択肢にはしっかり出てきて、
本家JIS関数と選んで使えるようになったと見せかけて、
どうやっても「#NAME」が表示されてしまいダメでした。
根本的な解決策は多分ありませんので、
Function名には句読点の使用を我慢しましょう。
日本語は助詞「てにをは」が非常に優秀な言語ですので、
Function JISカナは全角に英数字は半角に
でも十分、文の区切りはわかると思います。
実際に今使っているこの関数名は、
「よく考えたらJISに[全角に]って意味がすでにあるじゃん」
ってことに気づいて、
Function JISカナASC英数字
という素晴らしい関数名に終着しております。
ちなみに小ネタですが(そもそもこの記事自体がネタですが)、
Function名に全角数字は使えず、勝手に半角ににされるのと一緒で、
句読点もよく見ると半角に自動で変換されます。
呼び出すときに全角で入力しても自動変換してくれますので、
別に半角で入力しなければいけないわけではないですけどね。
また、この現象は句読点のみの現象です。
記号は普通に使えますので、①②③などは使用できますし、
Function カナ→全角_英数字→半角
みたいに「→」も使えます。
使う意味がない句読点と違って「→」は普通に見やすくて便利なので、
気に入ったら使ってみてください。
この記事のカテゴリを「VBAの落とし穴」と「雑談」どっちにしようか迷ったのですが、こんな罠でも引っかかる人は(現にここにも)いると思うので、落とし穴カテゴリに入れてみました。
こんなん引っかかるやつおらんやろm9(^Д^)とか思った人は、
10秒以内にこの関数を英訳してください↓
Function カナは全角に英数字は半角に