[[20030801132220]] 『VBA:TEXT関数で日付形式を指定するとエラー』(Y) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA:TEXT関数で日付形式を指定するとエラー』(Y)

マクロでTEXT関数で日付形式を指定するとエラーになる。

マクロで、入力当日の日付をヘッダーに反映させたいので、一旦TODAY関数にて日付を求め、TEXT関数にて文字列に置き換えようと思っています。表示形式を8/1のように月/日にしたいので、

Range("A1").Formula="=TEXT(B1,"m/d")"

と入力すると、エラーになってしまいます。エラーはコンパイルエラーで、修正候補:ステートメントの最後 と出て、mの部分にカーソルが行きます。なぜでしょうか??ご存知の方はぜひ教えてください。また、日付を他のことに反映させる方法がこれしか思いつかないのですが、もっと良い方法があればぜひアドバイスください。よろしくお願いします。


 コンピュータは人間が思ったように解釈してくれません。

 Range("A1").Formula = "=TEXT(B1,"  m/d  ")"
                                  ??   ??
 ↑のように受け取ってしまいます。

 そこで↓のようにすれば、一歩前進できるかも。

 (kazu)

 Range("A1").Formula="=TEXT(B1,""m/d"")"


kazuさん、さっそくありがとうございます!無事できました。コンピュータは変数か何かと勘違いしているのですかね・・。もっと頭をひねらないといけないですね。どうもありがとうございました。(Y)


お礼を言った後で申し訳ありませんが、表示形式を○月○日にしようと思ったらまたエラーになりました。今度はプログラムの入力時にはエラーになりませんが、実行してみるとエラーになります。

Range("A1").Formula = "=TEXT(B1,""m""月""d""日"""")"

上記で教えていただいたように、 " を加えてみたり、マクロの記録で表示形式を変えてその部分をコピーしたりしてやってみたのですがダメでした。何が原因なのか、まったくわかりません。(日のあとに " がこんなに重なるのもなぜかわかりません)みなさんの力ばかりお借りして申し訳ありませんが、どなたか助けてください。お願いします。(Y)


 ↓のようにすれば、ハッピーになれるかも。
 (kazu)

 Range("A1").Formula = "=TEXT(B1,""m月d日"")"


kazuさん、ありがとうございます。無事ハッピーになれました(涙)本当にありがとうございます。どうしてこうすればできるかはこれからゆっくり考えます。そうやって考えないと自分で成長できないですもんね。こちらはそういうこともかんがえさせてくれるとても素晴らしいサイトですね。(Y)


 私の説明が不十分だったようで、ごめんなさい。

 この手の問題は考えても答えはでません、寝られなくなります。

 通常はダブルクオーテーションで文字列の開始と終わりを表現します。

 ダブルクオーテーションの中にダブルクオーテーションを入れたい場合
 やっかいなことになるのです。

 ダブルクオーテーションの中でダブルクオーテーションが2つ連続すると、
 それを1つのダブルクオーテーションとして出力するよと
 Microsoft のVBA 設計者が勝手に決めたのです。

 以上。何かかえってわからなくなったと声が聞こえそうですが。
 (kazu)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.