プロが教えるわが家の防犯対策術!

月別の表で条件に合う場合に列挿入されるVBAを教えていただきたいです。

月を選択すると自動で1日から末日まで自動で表が作成されるマクロを使っています。

やりたいことは月中のすべての日曜日の右隣に確認印の列が挿入されるようにしたいです。
画像は見本なので、元の確認欄がない表は残す必要はないです。
月別の表のマクロ実行後に確認印追加のマクロを入れたいです。

いろいろやってみましたがうまく動きません…
よろしくお願いいたします。

「マクロ VBAを教えてください。」の質問画像

質問者からの補足コメント

  • 早々にご回答ありがとうございます。
    画像の月曜日なくなってましたね^^;
    見本用に作っただけのもので、ミスです。
    月曜日もありますm(__)m

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/12/14 15:57

A 回答 (4件)

こんばんは


>月を選択すると自動で1日から末日まで自動で表が作成されるマクロを使っています。
違うかもですが、この処理の内容によると思います。

値を出力し表を作っているのなら良いけれど 数式や関数をセルに出力しているのなら、後加工より表を作成するマクロをいじるか、後加工の場合、
初めにActiveSheet.UsedRange.Value=ActiveSheet.UsedRange.Value
などで値として、月曜をキーにするならそのまま文字列をキーにした方が良さそうな気がします。。
VBAでセルに数式を書き込む方法は私は避けますが、合理的な側面があるのでよく見かける方法です。上手くいかない理由も此のあたりにあったりして?さて、どうでしょう?
    • good
    • 0

No.2です。



補足に対して。
月曜日の前に列を入れるってならそのまま使えると思います。
あくまでも日曜日と月末だけに絞りましたので。
    • good
    • 0

Sub megu()


Dim c As Long, col As Long

col = Cells(2, Columns.Count).End(xlToLeft).Column

Cells(1, col + 1).Value = "確認"
Cells(2, col + 1).Value = "印"

For c = col To 2 Step -1

If Weekday(CStr(Cells(1, c).Value)) = 1 Then
Cells(1, c + 1).EntireColumn.Insert
Cells(1, c + 1).Value = "確認"
Cells(2, c + 1).Value = "印"
End If

Next

End Sub

ん~違うかな?
で、月曜日ってお休みだから記載がないの?
一応1行目はシリアル値(日付:西暦/月/日)が入っていて、表示だけ”日”になっていると言う想定です。
この回答への補足あり
    • good
    • 0

「月曜日」が不要ならそこに「確認」欄を上書きすれば良い

    • good
    • 0

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