- ベストアンサー
Excel VBAでセルに数式を入れたが正しく表示されない理由が分からない
- VBAでセルに数式を入れた際に、正しい数式が表示されない問題が発生しています。
- 実行した際にはセルに「#NAME?」と表示されますが、数式バーには正しい数式が表示されています。
- 数式バー内で数式を選択してリターンキーで決定すると、正しくセルのふりがなが表示されます。なぜこのような状況が発生するのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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)))】はエラーになるようです。 お試し下さい。
その他の回答 (1)
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
全然関係ないけど、文字列の中にダブルクォートを書く時は「""」と書くだけで良いです。 例えば Range("F1").Formula = "=IF(D4="""","""",DBCS(PHONETIC(D4)))" のように。 式の「"ABCD""EFGH"」は「ABCD"EFGH」になります。 なので「=IF(D4="","",DBCS(PHONETIC(D4)))」と書きたい時は「"=IF(D4="""","""",DBCS(PHONETIC(D4)))"」と書きます。
お礼
ありがとうございます。
お礼
早速、ご回答ありがとうございました。 質問させていただいてから、自分でも解決方法を模索していました。 ご教示いただいた、DBCSにする方法と、 Range("F1").Formula= ではなくて、 Range("F1").FormulaLocal= とすれば、解決できることも見つけました。 ご指摘のように、JIS関数が問題だったのですね。 たしかに、半角文字を全角文字にするというExcelのJIS関数は日本固有の関数でしょうから Formulaプロパティには格納されないのでしょうか? その解決として、FormulaLocalプロパティが用意されているのですね。