★ 日付から曜日を割り出します  サンプルファイルダウンロード

◎ バラバラに入力された「年」「月」「日」のデータをひとつの日付として処理を行い、その日付を基に曜日を割り出す処理を行います。


シート上には、1行目にそれぞれタイトルを付けておきます。
シート上をダブルクリックするとユーザーフォームが出てくるようにしておきます。参考
。ユーザーフォームは次のような感じでつくりました。

 それぞれのテキストボックスには、「年」「月」「日」曜日を入れるラベルには「曜日」というオブジェクト名をつけました。中身のコードは次のようになります。
「日」を入力して更新後処理でコードを動かすようにします。
Changeイベントではうまく動きませんよ。

Private Sub 日_AfterUpdate()

 'テキストボックス「年」「月」「日」を代入する
 '「年値」「月値」「日値」を数値として宣言


  Dim 日値 As Integer
  Dim 月値 As Integer
  Dim 年値 As Integer
  Dim 日付値 As Date

 'エラーが出来た時に回避するためのコードです
  On Error GoTo errms

 'テキストボックス「年」が未入力の時のエラーメッセージ
  If 年.Value = "" Then
    msgbox "年を入力して下さい"
    年.SetFocus
  End If

 'テキストボックス「月」が未入力の時のエラーメッセージ
  If 月.Value = "" Then
    msgbox "月を入力して下さい"
    月.SetFocus
  End If

 'テキストボックス「年」「月」「日」の値を変数「年値」「月値」「日値」に代入

  年値 = 年.Value
    Range("A2") = 年値
  月値 = 月.Value
    Range("B2") = 月値
  日値 = 日.Value
    Range("C2") = 日値

 'それぞれの値をDateSerial関数でひとつの日付にまとめ、変数「日付値」に代入
  日付値 = DateSerial(年値, 月値, 日値)
    Range("D2") = 日付値

 '変数「日付値」の値からWeekday関数を使って曜日を割り出す
  曜日 = WeekDay(日付値)

 '割り出された曜日を日本語に返還
  Select Case 曜日
    Case vbSunday
      曜日 = "日曜日"
    Case vbMonday
      曜日 = "月曜日"
    Case vbTuesday
      曜日 = "火曜日"
    Case vbWednesday
      曜日 = "水曜日"
    Case vbThursday
      曜日 = "木曜日"
    Case vbFriday
      曜日 = "金曜日"
    Case vbSaturday
      曜日 = "土曜日"
  End Select

  Range("E2") = 曜日

  Unload Me

 'エラーが出たらSubプロシージャーを終了
  errms:

  Exit Sub

End Sub


このコードの中で次のDateSerial関数を利用するとバラバラに入力された年月日をひとつにできます。
  日付値 = DateSerial(年値, 月値, 日値)

それとWeekday関数を使うことで日付をもとにその日の曜日を割り出すことができます。
  曜日 = WeekDay(日付値)

また割り出された日をSelect Caseステートメントを利用して日本語の曜日に置き換えることができます。
さて実行結果はこんな感じです。

[前へ][トップ][次へ][サンプルファイルダウンロード]