VBAで変数を日本語にすると危険?海外環境で起きた不具合とその理由

VBAの変数は日本語より英語で統一するのがおすすめ
VBAの変数名やプロシージャ名は、日本語ではなく英語で統一することをおすすめします。(推奨)
EnjoyExcelコーディング時は変数を日本語で書くとわかりやすいんですよ。
だから初心者さま向けに教える時は日本語を使っています。
このように事情があって日本語のプロシージャ、変数を使う事は個人としては全く問題ないと思っています。
しかし環境によっては文字化けやエラーの原因となり思わぬ不具合につながる可能性があります。
関連記事
こちらの記事はプロシージャ(プログラム)や変数の宣言を日本語で書いています


関連書籍
電子書籍はこちらです。
日本語の変数が不具合の原因になる理由
早速結論です。言語の差ですね。
日本語の文字列が環境依存の影響を受けやすいからです
VBA自体は日本語の変数名にも対応していますが実行環境が変わると以下のような問題が発生することがあります。
- 文字コードの違いによる文字化け
- プロシージャが正しく認識されない
- 変数名が正しく認識されない
特に日本語環境と英語環境では文字の扱いが異なるため同じコードでも正常に動作しないケースがあります。
実際に発生したエラーと原因
実際に私はマクロを日本語の変数で作成することもあります。
今回も以下のようなコードを使っていました。
- 変数名:売上金額
- 変数名:顧客名
- プロシージャ名:請求書作成
日本語で記述することでコードの意味が直感的に分かりやすく業務的にはとても扱いやすいです。
しかしこのVBAファイル(.xlsm)を英語圏の環境で使用したところ、不具合が発生しました。
- コードの一部が文字化けする
- 変数が認識されずエラーになる
- プロシージャがエラーになるのでそもそもマクロが正常に動作しない
といった問題が起きました。原因を調査した結果日本語の変数やプロシージャ名が影響していることが分かりました。
解決方法
最終的にはすべての変数名とプロシージャ名を英語で書き直すことで問題は解消しました。
具体的には下記のように変更しています。
- 売上金額 → salesAmount
- 顧客名 → customerName
- 請求書作成→InvoiceCreation
なお日本語の説明が必要な部分はコメントとして残すことで可読性も維持しました。
日本語の変数は使ってもいい?使い分けの考え方
ここまで読むと「日本語の変数は使わないほうがいい」と感じるかもしれませんが必ずしもそうとは限りません。
実際私のサイト内の記事でも日本語の変数を使って解説しているケースはあります。
理由としては以下のようなメリットがあるためです。やはり効率はいいんですよ。
- 初心者にとって理解しやすい
- 処理内容が直感的に伝わる
具体的な使い分け
以下のように使い分けるのがおすすめです。Excelファイルごと分けた方がいいですね。
- 学習・解説用 → 日本語の変数でもOK
- 実務・配布用 → 英語の変数に統一
「誰が使うのか」「どの環境で使うのか」を基準に判断することで、無理なく運用できます。
ワンポイント:日本語の変数を英語の変数に簡単に書き直す方法
VBEの中には「置き換え」という機能があります。
編集タブを選択すると短冊の中央あたりに表示されます。


説明が必要な要素だけピックアップしました
入力が必須な要素と説明が必要な要素をピックアップして説明します。
- 検索する文字列 ・・・ 変更前の文字列
- 置換後の文字列 ・・・ 変更後の文字列(ここに書いた文字に変わります)
- カレントプロシージャ ・・・ 現在カーソルで選択されているプロシージャ
- カレントモジュール ・・・ 現在カーソルで選択されているモジュール
- カレントプロジェクト ・・・ .xlsmの中に用意されたコード全部
あとはおおよそイメージで分かりますよね。実際に使用してみてください。
必要な項目を入力し「すべて置換」ボタンをクリックすると対象の文字列が一斉に置き換えられます。
VBAでエラーを防ぐための結論
VBAで開発する際は「変数名は英語、説明は日本語コメント」という形が最もバランスが良いと感じています。
日本語で変数を入力するのは分かりやすい反面デメリットもあります。
- 環境依存のリスクがある
- 文字化けの原因になる
- 海外環境で不具合が出る可能性がある
将来的なトラブルを防ぐためにも用途に応じて使い分けつつ基本は英語でコードを書くことをおすすめします。
一般的にプログラミング言語は英語で書かれます。スキルアップの為にもできるだけ英語でコードを用意しましょう。



