エクセルVBAで日付の曜日を判定してセルに入れる方法【日付変換】

こんにちは~。「デザインもできるシステムエンジニア」のあつもり(@atumori17)です。今日も業務効率化のアイデアを発信していきますっ!

前回は「DateSerial関数で今月の日付を取得してワークシートに入れる方法」を紹介しました。

エクセルVBAでDateSerial関数で今月の日付を取得してワークシートに入れる方法
業務でエクセルを使っていると日付を入れたケースがよくありますよね。例えばスケジュール表を作っているときなどです。そこでDateSerial関数で今月の日付を取得してワークシートに入れる方法を紹介します。これから何回かに渡って日付や曜日を自動で入力するツールを作成していきます。

今回はさらに使いやすくするために、「日付の曜日を判定してセルに入れる方法」を紹介していきます。曜日まで入れられるようになるとグッと実用性がアップしてくると思います。

レクタングル大336×280

日付の曜日を判定してセルに入れるプログラムの作成

前回のプログラムを修正する

それでは実際にプログラムを作っていきます。

前回使用した「今月の日付を入力.xls」をコピーして「今月の日付と曜日を入力.xls」を作成します。

UserForm1のSubプロシージャ「CommandButton1_Click」に次の段落で説明するコードを貼り付けます。

サンプルコードを貼り付ける

「CommandButto1_Click()」に貼り付けるコードです。

プログラムコードの解説

それではプログラムコードの解説をしていきます。重要なポイントに絞って説明していきます。

プログラム全体の流れは以下のようになります。

  1. 今月の月末の日にちを取得する
  2. 処理対象の列番号または行番号を取得する
  3. 行か列どちらが選択されたかを調べる
  4. セルに日付を入力する
  5. 日付から曜日を取得して隣のセルに入れる

1~4までは前回の記事で紹介していますので、5の日付から曜日を取得するところの説明をしていきます。

Weekday関数で日付から曜日の値を取得する

日付から曜日を調べるにはまずWeekday関数を使用します。

Weekday(日付)

Weekday関数は引数に指定した日付の曜日を返す関数です。ただし曜日は数値で返します。

曜日 戻り値

  • 日曜 1
  • 月曜 2
  • 火曜 3
  • 水曜 4
  • 木曜 5
  • 金曜 6
  • 土曜 7

というように曜日名ではなく、数値で返すんですね。

例えば2017/11/14は火曜日ですが、

tmp=Weekday(“2017/11/14”)

とすると、tmpには3が入ります。

WeekdayName関数で曜日の数値から曜日を取得する

さきほどの説明のようにWeekday関数が返すのは曜日の数値ですので、この数値を曜日に直す必要があります。日付の横に数値が入っていても何曜日かわからないですからね~。

数値から曜日を調べるには次のようにします。

WeekdayName(曜日を表す数値,曜日表示の有無)

ただし返す値は「火曜日」というように「曜日」が入っています。そこで第2引数で曜日表示の有無が指定できますので、Trueを指定して曜日を省略するようにします。

曜日を取得する処理は以下になります。全体のプログラムコードでは31~36行目、47~52行目になります。

プログラムコードの解説は以上です。

日付の曜日を判定してセルに入れるプログラムの動作確認

それでは実際に出来上がったプログラムを動かしてみましょう。

ワークシートの起動ボタンを押します。

日付入力ボタンをクリックして、列を選択しOKボタンをクリックします。

今月の日付と曜日が入力されました。

行を選択した場合はこんな感じになります。

まとめ

いかがでしたか?今回の内容をまとめます。

  • Weekday関数で日付から曜日の値を取得できる
  • WeekdayName関数で曜日の数値から曜日を取得できる
  • 曜日名を省略するにはWeekdayNameの第2引数にTrueを指定する

以上「日付の曜日を判定してセルに入れる方法」でした。おつかれさまでした~。

レクタングル大336×280
レクタングル大336×280

シェアする

  • このエントリーをはてなブックマークに追加

フォローする