★ 日付から曜日を割り出します サンプルファイルダウンロード | |||
◎ バラバラに入力された「年」「月」「日」のデータをひとつの日付として処理を行い、その日付を基に曜日を割り出す処理を行います。 |
|||
シート上には、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ステートメントを利用して日本語の曜日に置き換えることができます。 さて実行結果はこんな感じです。 |
|||
|