• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBA)

Excel VBAでセルに数式を入れたが正しく表示されない理由が分からない

このQ&Aのポイント
  • VBAでセルに数式を入れた際に、正しい数式が表示されない問題が発生しています。
  • 実行した際にはセルに「#NAME?」と表示されますが、数式バーには正しい数式が表示されています。
  • 数式バー内で数式を選択してリターンキーで決定すると、正しくセルのふりがなが表示されます。なぜこのような状況が発生するのでしょうか?

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

  • ベストアンサー
  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.1

nori8823さん こんにちは。 EXCELは不思議なことが多いですね。 エラーの原因は「JIS」関数のようです。 VBAのWorksheetFunctionでも「JIS」関数はありません。 推測ですが「JIS」関数を使用(入力)すると「DBCS」関数に変換していると思われます。 よってプログラムでは  Range("F1").Formula = "=if(D4=" & """"",""""" & ",JIS(PHONETIC(D4)))"              ↓  Range("F1").Formula = "=if(D4=" & """"",""""" & ",DBCS(PHONETIC(D4)))" とすれば正しい結果になると思います。 確認するには上記の命令を実行後  セルF1には【=IF(D4="","",JIS(PHONETIC(D4)))】となっていると思います。  またVBAで(イミディエイト・ウィンドウで)  「? Range("F1").Formula」 と入力してEnterを押下すれば  【=IF(D4="","",DBCS(PHONETIC(D4)))】  と表示されると思います。 注)セルF1に【=IF(D4="","",DBCS(PHONETIC(D4)))】はエラーになるようです。 お試し下さい。

nori8823
質問者

お礼

早速、ご回答ありがとうございました。 質問させていただいてから、自分でも解決方法を模索していました。 ご教示いただいた、DBCSにする方法と、 Range("F1").Formula= ではなくて、 Range("F1").FormulaLocal= とすれば、解決できることも見つけました。 ご指摘のように、JIS関数が問題だったのですね。 たしかに、半角文字を全角文字にするというExcelのJIS関数は日本固有の関数でしょうから Formulaプロパティには格納されないのでしょうか? その解決として、FormulaLocalプロパティが用意されているのですね。

その他の回答 (1)

回答No.2

全然関係ないけど、文字列の中にダブルクォートを書く時は「""」と書くだけで良いです。 例えば Range("F1").Formula = "=IF(D4="""","""",DBCS(PHONETIC(D4)))" のように。 式の「"ABCD""EFGH"」は「ABCD"EFGH」になります。 なので「=IF(D4="","",DBCS(PHONETIC(D4)))」と書きたい時は「"=IF(D4="""","""",DBCS(PHONETIC(D4)))"」と書きます。

nori8823
質問者

お礼

ありがとうございます。

関連するQ&A