• ベストアンサー

Excelのマクロについて

マクロの保存先を「開いているすべてのブック」にして、 A2~A32をいったん削除した後で、 1月1日から、1月31日を入力して、 最後にA2をアクティブセルにしておく、というマクロを作りました。 1/1と入力すると、普通、1月1日と表示されますよね? 同一ブック、同一シートないでしたら、そのように表示されるのですが、 同一ブック、別シートあるいは、 別ブックで、このマクロを実行すると、 2001/1/1と表示されます。 あとで、セルの表示形式を変えればいいんでしょうが、 この原因が、なぜ、そうなるのかが知りたいです。 (まだ、そのシート内以外だと、マクロが設定できない、 とかの方がわかるんですが。) また、 同一シートでなくても、 1月1日~1月31日の表示形式のままで、 設定できるマクロがあったら、あわせて教えてください。 作成しているファイルの、 バージョンは、Excel2002ですが、 マクロは、2000と変わらないと思うんですが・・・。 よろしくお願いいたします。

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

  • ベストアンサー
  • now2150
  • ベストアンサー率50% (17/34)
回答No.1

確かに 同一ブック、別シートあるいは、 別ブックで、このマクロを実行すると、 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をドラッグしますよね。   

himehime
質問者

お礼

回答をありがとうございます。 あ、そうか。 マクロだから、表示形式も命令しなおしてあげないといけなかったんですね。 回答をみて、「なるほど」と思いました。 無事にできました。 また何かありましたら、よろしくお願いいたします。

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

参考に作ってみました。 作られたマクロは、個人用マクロブック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

himehime
質問者

お礼

回答ありがとうございました。 一回マクロを全部削除してからやりなおしたので、 残ってないのか、残っているのに、 私の探し方が悪いのか、 元データを紛失いたしました。 でも、前お二人の回答で、思い通りのマクロを作ることができ、 なおかつ、nishi6さんの、VBAのコードで、 大体の意味をつかむことができました。 三人のみなさんの回答を総合して、無事、解決することができました。 nishi6さんには大変申し訳ないのですが、 甲乙つけがたいので、 ポイントは、先着順につけさせていただきますね。 明日になってから締め切りさせていただきます。 本当にみなさん、ありがとうございました。

  • zf01-rei
  • ベストアンサー率42% (21/50)
回答No.2

日付の表示形式が"2001/1/1"となってしまうのは、Excelが日付表示をする際の標準的な表示形式としてその形式を採っているためです。 従って、A2~A32をいったん削除したといっても、"Delete"キーで削除しただけであれば"1月1日"の形式で表示するという「書式設定」が残っています。 ですので、マクロを作成する際に「セルの書式設定」→「表示形式」で"1月1日"の形式になるようなマクロを組んでやれば、新規ブックでも任意の表示形式を再現できると思います。

himehime
質問者

お礼

どうもありがとうございました。 >従って、A2~A32をいったん削除したといっても、"Delete"キーで削除しただけであれば"1月1日"の形式で表示するという「書式設定」が残っています。 この部分で、「げっ。忘れてた。」と思いました。 そうですよね。 Deleteキーだけだと、データしか削除されないんですよね。 念のため、書式も含めた削除に変更したマクロに作り直しました。 本当に助かりました。

関連するQ&A

  • エクセルマクロを教えてください

    エクセル2003を使用しています。ブックに1シートあります。シート名は「C3」セルに入力してある日付にしますが、シート上の表示形式は「平成20年1月」となっているところをシート名は「08-01」にします。その後シートを11枚コピーし、それぞれのシートの「C3」セルに年月を入力し、シート名を「08-02」「08-03」・・・「08-12」としたいのですが、うまくいきません。 マクロに詳しい方のご指導をお願いいたします。

  • Excelシートの自動コピーでマクロを使いたい

    表題通り、Excelシートの自動コピーをマクロを使って行いたいのですが、 マクロやVBAの知識が全くないため、どなたかコードを教えていただけないでしょうか。 まず今現在、B1セルに9月1日と日付を入れ、シート名を1日としたものがあります。 これを自動で複製して、B1セルの日付を9月2日 9月3日… シート名を2日 3日…となるように、日毎ごとの一ヶ月分のシートを作り ひとつのbookにしたいと考えております。 また、その際に、B1セルとシート名の日付が日曜・祭日に当たる場合、 シート名に色を付けたいと思っています。 (因みにB1セルの日付はシリアル値で入れていて、 書式で○月○日となるように表示していて、日付が日曜・祭日に当たる場合は 赤文字になるよう、別シートに祝日リストも作って 条件付き書式で設定してあります。) Excelの関数は使えても、マクロは全く分からないので どうかよろしくお願い致します。

  • エクセルマクロで日付検索について

    エクセルのマクロで日付を検索するマクロについて質問です。 ブックAのシート1のA列に A1 2017/3/13 A2 2017/4/1 A3 2017/4/19 A4 2017/5/16 A5 2017/7/17 A6 2017/9/5 というような日付が入っています。 ブックBのシート1のA1セルに2017/6/3と入力してマクロを実行した際に その日付に一番近い一つ前の日付を探し、見つけた日付のB列のセルを ブックBのシート1のA2セルに表示したいです。 今回の例であれば2017/6/3に対してブックAのシート1のA列はA4セルが当てはまり その当てはまったA4セルの1つ横のB4セルの内容をブックBのシート1のA2セルに表示するということです。 よろしくお願いします。

  • エクセル マクロ 行 非表示

    マクロについてご教授お願い出来ないでしょうか。 マクロ初心者です。 エクセル アクティブセル(ex A120セルやA20セル)の行から1行目までを非表示にさせるマクロがわかりません。 アクティブセルから下の行を非表示にさせるマクロは下記URLにて紹介がありましたが・・ https://www.relief.jp/docs/excel-vba-hide-below-active-cell.html また、もし可能でしたら、アクティブセルからA2行目までの非表示、つまり 1行目は残すマクロが可能でしたら、合わせてご教授どうぞよろしくお願い致します。 

  • エクセルのマクロ(値を検索して別シートにコピー)

    エクセルで下記のマクロをご教示いただけるでしょうか。 1.Sheet1のアクティブセルの右に5つ、下に1つのセルを起点として下方向に6セル分をコピー (例)Sheet1のアクティブセルがA2だとすると、F3~F8をコピー 2.Sheet1のアクティブセルの値(yy/mm/dd形式の日付)と同じ値のセルをSheet2のA列から検索し、該当セルの右に2つ分のセルに行列を入れ替えて値のみをペースト (例)Sheet1のアクティブセル(A2)の値がSheet2のA4セルにあるとすると、Sheet2のC4に行列を入れ替えて値のみペースト 3.Sheet1のアクティブセルの値がSheet2のA列に2つ以上あれば、「同じ日付が複数あります。」というメッセージを表示

  • Excelのマクロでデータ形式を容易に変更する方法

    2年ぶりにExcelのマクロについて 質問させていただきます。 他の人がExcelで作ったデータを取り込んで使いたいのですが マクロでデータ形式を変換する適切な方法を教えてください。 他の人が作ったExcelファイルで 例えばセルA1に H28/04/01 というデータがあったとします。 画面に表示される内容も セルに入力されている内容も どちらも H28/04/01 です。 ちなみに、セルの書式設定を確認すると 「標準」となっているのですが これが「文字列」だとしても 以下に記す内容は おそらく同じだと思います。 このデータを、分かりやすいように セルに入力されている内容は 2016/4/1 となるようにして しかも画面に表示される内容は 平成28年4月1日 となるようなマクロを組みたいのです。 Cells(1, 1) = Format(Cells(1,1),"yyyy/m/d") Cells(1, 1).NumberFormatLocal = "ggge年m月d日" と作ってみましたが このマクロを実行すると 2016/4/1 と表示されす。 そして、この状態から 改めてマクロを実行すると ようやく 平成28年4月1日 と表示されます。 これを1回のマクロ実行で済ませるためには どのように組んだらよいのでしょうか。 なお、上記の内容は Excel2010 でも Excel2003 でも同じでした。 マクロについては、まだまだ素人だと 痛感しております。 回答をよろしくお願いいたします。

  • Excelのマクロ初心者です

    Excelのマクロ初心者です 同じBookでセルA1に”1”が入力されているSheetのみ全て印刷する マクロを教えてください!

  • エクセルマクロのことです

    通常使っていたマクロを間違えて消してしまい、その上再構築できなくて困っています。 こんなマクロだったですが。 ブック内に複数のシートが入っています。新しくSheetを追加してA2セル(他のセルの時もあります)をアクティブにします。 Alt+F8→実行でA2セルから下へ、そのブック内の全ての「シート名」が書き出されるというマクロだったのです。 マクロ初心者です、どなたかアドバイスをお願いします。

  • excelでマクロシートをコピーしたとき

    excelでbook1のsheet1のセルA1に「1」を入力→プリントアウト→A1に「11」を入力→プリントアウト・・・以下「31」まで繰り返し。 というマクロが組んであります。 (ボタンにマクロが登録されています。) このシートをbook2にコピーをしたときに マクロを実行する(ボタンを押す)とbook1が開いてしまいます。 これをbook1を開かずにbook2でマクロを実行するには どのようにしたらよいでしょうか。 book2でマクロを作成し直して さらにボタンにマクロを登録していますが、 bookの数が多いのでけっこうな手間になります。 簡単な方法があれば教えて下さい。

  • 繰り返し処理のマクロ

    下記のマクロをご教示いただけるでしょうか。 ①シートAのアクティブセルをコピーし、シートBのE1セルにペースト ②マクロ「結果反映」を実行 ➂シートAのアクティブセルを1行下に移動 ①から➂をアクティブセル=空白セルになるまで繰り返し

専門家に質問してみよう