〖ExcelVBA・マクロ〗日付から曜日を自動で入力する方法|入力した瞬間に曜日を反映する便利マクロ

ExcelVBA

「日付の横に毎回“月・火・水…”と手入力している」
「日報や勤務表の曜日入力が面倒」

そんなときに便利なのが、ExcelVBAで日付から曜日を自動入力するマクロです。

本記事では、初心者でもすぐ使えるように、
コピペで動く曜日自動判定マクロ を解説とともにご紹介します。

スポンサーリンク
スポンサーリンク

完成イメージ

A列に日付を入力すると、B列に曜日が自動で表示される

日付を入力するだけで曜日が出るので、勤務表・日報・シフト管理などに最適です。

目次

シートの準備

今回は、A列に日付を入力すると、B列に曜日が自動で表示されるように設定します。 シート名は 「入力シート」 とします。

VBAコード(コピペOK)

※このコードは「入力シート」のシートモジュールに貼ります。
(通常の標準モジュールでは動きません)

Private Sub Worksheet_Change(ByVal Target As Range)

    ' A列以外の変更は処理しない
    If Intersect(Target, Me.Columns("A")) Is Nothing Then Exit Sub

    Dim cell As Range
    For Each cell In Target

        If IsDate(cell.Value) Then
            ' 曜日をB列に書き込む
            cell.Offset(0, 1).Value = Format(cell.Value, "aaa")
        Else
            ' 日付でない入力は曜日をクリア
            cell.Offset(0, 1).ClearContents
        End If

    Next cell

End Sub

これだけで、A列に日付を入れた瞬間に B列に曜日が自動で表示されます。

コード解説(初心者向け)

① A列に入力された時だけ動くようにする

If Intersect(Target, Me.Columns("A")) Is Nothing Then Exit Sub

これにより、他の列に入力したときに無駄にコードが動くのを防ぎます。

② Date 型かどうか判定して曜日を返す

If IsDate(cell.Value) Then

入力された内容が日付の場合だけ処理します。
日付でない場合は曜日をクリアするので、誤入力にも安心。

③ 曜日取得の方法

Format(cell.Value, "aaa")

– 「aaa」→ 日本語(“月” “火” “水”)
– 「aaaa」→ “月曜日” のように完全表示

Excel の `Format` 関数は曜日判定との相性が良く、処理も軽いです。

応用:さらに便利にするカスタマイズ

① 土日を自動で色分けする

If Weekday(cell.Value) = vbSunday Then
    cell.Offset(0, 1).Interior.Color = RGB(255, 200, 200) ' 日曜:赤系
ElseIf Weekday(cell.Value) = vbSaturday Then
    cell.Offset(0, 1).Interior.Color = RGB(200, 200, 255) ' 土曜:青系
Else
    cell.Offset(0, 1).Interior.ColorIndex = xlNone        ' 平日:色なし
End If

勤務表・シフト表に便利です。

② 英語表記にする

Format(cell.Value, "ddd")   ' Mon, Tue, Wed...
Format(cell.Value, "dddd")  ' Monday, Tuesday...

③ 曜日を「数値」で返す(業務システム連携向け)

Weekday(cell.Value)   ' 日=1, 月=2, 火=3 ...

マクロの設置方法

  1. Excelで「入力シート」を開く
  2. Alt+F11でVBE(VBAエディタ)を開く
  3. 左側の「入力シート」をダブルクリック
  4. 表示されたコード画面に今回のマクロを貼り付け
  5. Excelに戻り、A列に日付を入力して動作確認

これだけで曜日自動入力システムが完成です。

まとめ:曜日入力の手間をゼロにできる便利マクロ

今回は、ExcelVBAで日付から曜日を自動入力するマクロをご紹介しました。

  • A列の入力を監視して曜日を自動セット
  • 曜日判定はFormat関数が便利
  • 土日色分けや英語表記など応用も簡単

勤務表・予定表・シフト管理など、日付と曜日がセットの表にとても便利です。
ぜひあなたのExcel業務に取り入れてみてください!

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

タイトルとURLをコピーしました