重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

各シートのN1に1日から31日まで自動で入るマクロはどうすれば出来ますか?
初心者なので宜しくお願いします

A 回答 (3件)

こんにちは!



VBAになりますが、一例です。
標準モジュールにしてください。

Sub Sample1()
 Dim k As Long, myEnd As Long, myDate As Date
  With Worksheets(1)
   myDate = .Range("A1")
    If IsDate(myDate) And Day(myDate) = 1 Then
     myEnd = Day(WorksheetFunction.EoMonth(myDate, 0))
     For k = 2 To myEnd
      Worksheets(k).Range("A1") = myDate + k - 1
     Next k
    Else
     MsgBox "月の初日のシリアル値を入力してください。"
     .Activate
     .Range("A1").Select
    End If
  End With
End Sub

※ シート数は31まであるという前提です。

※ 簡単にやっていますので、細かい処理は考慮していません。
たとえば、小の月(2月の場合は28もしくは29Sheetまで)の処理になる。

※ 必ずSheet見出しの一番左側SheetのA1セルに
表示したい月の「1日」のシリアル値を入力し、マクロを実行してください。m(_ _)m
    • good
    • 0
この回答へのお礼

有難うございます。
シート名が1から31までなので動かないのでしょうか?
最初のシート[1]のA1に日付を入れマクロの実行をしたのですが
動いてくれません(^_^;)

Kというのは何なのでしょうか?
すみません、初心者なので。

お礼日時:2018/07/23 09:03

No.2です。



>シート名が1から31までなので動かないのでしょうか?
前回のコードはシート名は関係ありません。
シート見出しの1番目シートのA1セルに各月に1日の日付データ(シリアル値)を入力後マクロを実行すると
シート見出しの2番目以降のシートに2日以降の日付を入れるコードにしていました。

ただ、各シートの日付を入れるセルをA1セルにしていました。
どうも失礼しました。質問文はちゃんと
>各シートのN1に・・・
となっていますね。

前回のコードの
>Worksheets(k).Range("A1") = myDate + k - 1

>Worksheets(k).Range("N1") = myDate + k - 1
に変更してください。

>Kというのは何なのでしょうか?
について・・・

変数「k」は「2~31」までループさせています。
すなわちシート見出しの2番目シート~31番目シートまで!というコトになり、
仮に「k」が2の場合は
2番目シートのN1セルに
1番目シートのA1セルのシリアル値(myDate)に「k-1」 → 2-1=1 をプラスしたシリアル値を!
「k」が3の場合は
「k-1」 → 3-1=2 を順にプラスしています。

この程度でどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

有難うございました(^^)/
For k = 1 To myEnd に変更して
シート1から日付を変えるように出来ました!

お礼日時:2018/07/23 18:39

VBA組まないとね。


でも、簡単。
雛形作って、それコピーして、名前を変える。
これを当月日数分繰り返し。

さ、頑張って作ってみて。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!