- ベストアンサー
Excelのマクロについて
マクロの保存先を「開いているすべてのブック」にして、 A2~A32をいったん削除した後で、 1月1日から、1月31日を入力して、 最後にA2をアクティブセルにしておく、というマクロを作りました。 1/1と入力すると、普通、1月1日と表示されますよね? 同一ブック、同一シートないでしたら、そのように表示されるのですが、 同一ブック、別シートあるいは、 別ブックで、このマクロを実行すると、 2001/1/1と表示されます。 あとで、セルの表示形式を変えればいいんでしょうが、 この原因が、なぜ、そうなるのかが知りたいです。 (まだ、そのシート内以外だと、マクロが設定できない、 とかの方がわかるんですが。) また、 同一シートでなくても、 1月1日~1月31日の表示形式のままで、 設定できるマクロがあったら、あわせて教えてください。 作成しているファイルの、 バージョンは、Excel2002ですが、 マクロは、2000と変わらないと思うんですが・・・。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
確かに 同一ブック、別シートあるいは、 別ブックで、このマクロを実行すると、 2001/1/1と表示されますね。 同一ブック、別シートあるいは、別ブックで、 1月1日~1月31日の表示形式にするには、 1月1日~1月31日の表示形式をマクロに意識させる設定が 必要なようです。 その手順は以下のようにします。 マクロの記録中で 1/1と入力し、1月1日と表示された後、 (1) A2セルを右クリックして、セルの書式設定をクリック (2) セルの書式設定ダイアログボックスの右方の「種類」窓の中が 1月1日になっているのを、一旦、他の表示をクリックします。 例えば、2000/1/1をクリック (3) 次に、再び1月1日をクリック。 (4) 下方の「OK]をクリック。 以上の手順を挿入すれば、良いはずです。 セルA3以降はA2をドラッグしますよね。
その他の回答 (2)
- nishi6
- ベストアンサー率67% (869/1280)
参考に作ってみました。 作られたマクロは、個人用マクロブックPERSONAL.XLS に有ると思いますので、その標準モジュールに貼り付けてみて下さい。 月を入力すれば、その月の1日から月末まで『1月1日』の形式で表示します。 Sub 一ヶ月を表示() '月の入力 Dim Tuki As Integer '表示する月 Dim TukiNissu As Integer '入力月の月日数 Tuki = Val(InputBox("月を入力して下さい。")) If Not (1 <= Tuki And Tuki <= 12) Then MsgBox "エラー!!": Exit Sub End If '初期化する Range("A2:A32").ClearContents '1日をセットする Range("A2").NumberFormatLocal = "m""月""d""日""" Range("A2") = Tuki & "/1" '月日数を求める(翌月1日の前日日付け)) TukiNissu = Day(DateSerial(Year(Range("A2")), Tuki + 1, 0)) '1ヶ月分表示する Range("A2").Select Selection.AutoFill Destination:=Range("A2:A" & (TukiNissu + 1)), Type:=xlFillDefault 'A2を選択状態にする Range("A2").Select End Sub
お礼
回答ありがとうございました。 一回マクロを全部削除してからやりなおしたので、 残ってないのか、残っているのに、 私の探し方が悪いのか、 元データを紛失いたしました。 でも、前お二人の回答で、思い通りのマクロを作ることができ、 なおかつ、nishi6さんの、VBAのコードで、 大体の意味をつかむことができました。 三人のみなさんの回答を総合して、無事、解決することができました。 nishi6さんには大変申し訳ないのですが、 甲乙つけがたいので、 ポイントは、先着順につけさせていただきますね。 明日になってから締め切りさせていただきます。 本当にみなさん、ありがとうございました。
- zf01-rei
- ベストアンサー率42% (21/50)
日付の表示形式が"2001/1/1"となってしまうのは、Excelが日付表示をする際の標準的な表示形式としてその形式を採っているためです。 従って、A2~A32をいったん削除したといっても、"Delete"キーで削除しただけであれば"1月1日"の形式で表示するという「書式設定」が残っています。 ですので、マクロを作成する際に「セルの書式設定」→「表示形式」で"1月1日"の形式になるようなマクロを組んでやれば、新規ブックでも任意の表示形式を再現できると思います。
お礼
どうもありがとうございました。 >従って、A2~A32をいったん削除したといっても、"Delete"キーで削除しただけであれば"1月1日"の形式で表示するという「書式設定」が残っています。 この部分で、「げっ。忘れてた。」と思いました。 そうですよね。 Deleteキーだけだと、データしか削除されないんですよね。 念のため、書式も含めた削除に変更したマクロに作り直しました。 本当に助かりました。
お礼
回答をありがとうございます。 あ、そうか。 マクロだから、表示形式も命令しなおしてあげないといけなかったんですね。 回答をみて、「なるほど」と思いました。 無事にできました。 また何かありましたら、よろしくお願いいたします。