'========================================================================================= ' 123 入力可能な数値・日付・時刻を制限する '----------------------------------------------------------------------------------------- '【ヒント】 ' タイトル機能に関係するマクロは、UserForm1のコードにあります。 ' この標準モジュールのマクロは、おためし機能の動作用のコードです。 '========================================================================================= ' ◆標準モジュールのコード◆ '----------------------------------------------------------------------------------------- '----------------------------------------------------------------------------------------- Sub おためしマクロ() UserForm1.Show vbModeless 'ユーザーフォームをモードレスで表示する End Sub '----------------------------------------------------------------------------------------- Sub Auto_Close() Application.DisplayAlerts = False '閉じる際に確認メッセージを出さない ActiveWorkbook.Close '現在開いているブックを閉じる End Sub '----------------------------------------------------------------------------------------- '========================================================================================= ' ◆UserForm1のコード◆ '----------------------------------------------------------------------------------------- Option Explicit Dim セル範囲 As String Dim 入力値の種類 As Long Dim データ範囲 As Long Dim 最小値 As Variant Dim 最大値 As Variant Dim 入力タイトル As String Dim エラータイトル As String Dim 入力メッセージ As String Dim エラーメッセージ As String Dim 日本語入力 As Long '----------------------------------------------------------------------------------------- Private Sub OptionButton1_Click() '◆◆◆ セル範囲 = "E8:E12" '対象セルを指定する 入力値の種類 = xlValidateDate データ範囲 = xlBetween '次の値の間 最小値 = "1/1/1900" '入力データの最小値 最大値 = "1/31/1900" '入力データの最大値 入力タイトル = "日だけを入力" エラータイトル = "日付のエラー:日だけ入力" 入力メッセージ = "1〜31 の範囲内で" エラーメッセージ = "1〜31 の範囲内で数値入力を" 日本語入力 = xlIMEModeOff 'オフ(英語モード) 入力規則を設定する End Sub '----------------------------------------------------------------------------------------- Private Sub OptionButton3_Click() '◆◆◆ セル範囲 = "F8:F12" '対象セルを指定する 入力値の種類 = xlValidateTime データ範囲 = xlBetween '次の値の間 最小値 = "0:00" '入力データの最小値 最大値 = "23:59" '入力データの最大値 入力タイトル = "時・分を入力" エラータイトル = "時刻のエラー:日だけ入力" 入力メッセージ = "0:00 〜 23:59 の範囲内で" エラーメッセージ = "0:00 〜 23:59 の範囲内で時刻入力を" 日本語入力 = xlIMEModeOff 入力規則を設定する End Sub '----------------------------------------------------------------------------------------- Private Sub OptionButton5_Click() '◆◆◆ セル範囲 = "G8:G12" '対象セルを指定する 入力値の種類 = xlValidateWholeNumber データ範囲 = xlGreaterEqual '次の値以上 最小値 = "0" '入力データの最小値 入力タイトル = "人数を入力" エラータイトル = "人数のエラー" 入力メッセージ = "子供も1名とカウント" エラーメッセージ = "少数点以下の端数を付けずに、整数入力を" 日本語入力 = xlIMEModeOff 入力規則を設定する End Sub '----------------------------------------------------------------------------------------- Private Sub OptionButton2_Click() セル範囲 = "E8:E12" '対象セルを指定する 入力規則をすべてクリアする End Sub '----------------------------------------------------------------------------------------- Private Sub OptionButton4_Click() セル範囲 = "F8:F12" 入力規則をすべてクリアする End Sub '----------------------------------------------------------------------------------------- Private Sub OptionButton6_Click() セル範囲 = "G8:G12" 入力規則をすべてクリアする End Sub '----------------------------------------------------------------------------------------- Private Sub UserForm_Deactivate() Unload Me End Sub '----------------------------------------------------------------------------------------- Private Sub 入力規則を設定する() '◆◆◆ Application.ScreenUpdating = False '画面を更新しない ActiveSheet.Unprotect 'シート保護を解除する ' Range(セル範囲).Select '対象セルを選択する If データ範囲 = xlBetween Then '「次の値の間」の場合 With Selection.Validation .Delete .Add Type:=入力値の種類, AlertStyle:=xlValidAlertStop, _ Operator:=データ範囲, Formula1:=最小値, Formula2:=最大値 .IgnoreBlank = True .InCellDropdown = True .InputTitle = 入力タイトル .ErrorTitle = エラータイトル .InputMessage = 入力メッセージ .ErrorMessage = エラーメッセージ .IMEMode = 日本語入力 .ShowInput = True .ShowError = True End With Else '「次の値以上」の場合 With Selection.Validation .Delete .Add Type:=入力値の種類, AlertStyle:=xlValidAlertStop, _ Operator:=データ範囲, Formula1:=最小値 .IgnoreBlank = True .InCellDropdown = True .InputTitle = 入力タイトル .ErrorTitle = エラータイトル .InputMessage = 入力メッセージ .ErrorMessage = エラーメッセージ .IMEMode = 日本語入力 .ShowInput = True .ShowError = True End With End If ' ActiveSheet.Protect 'シート保護する Range("M15").Select 'カーソルを移動する End Sub '----------------------------------------------------------------------------------------- Private Sub 入力規則をすべてクリアする() Application.ScreenUpdating = False ActiveSheet.Unprotect Range(セル範囲).Select With Selection.Validation .Delete .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _ :=xlBetween .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .InputMessage = "" .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End With ActiveSheet.Protect Range("M15").Select End Sub '=========================================================================================