'========================================================================================= ' 125 入力可能な値を数式を使って制限する '----------------------------------------------------------------------------------------- '【ヒント】 ' タイトル機能に関係するマクロは、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 String Dim 入力タイトル As String Dim エラータイトル As String Dim 入力メッセージ As String Dim エラーメッセージ As String Dim 日本語入力 As Long '----------------------------------------------------------------------------------------- Private Sub OptionButton1_Click() セル範囲 = "F8:F12" '対象セルを指定する 入力値の種類 = xlValidateCustom 'ユーザー設定 データ範囲 = xlBetween '次の値の間 数式 = "=F8<=E8*0.1" '◆◆◆ 値引き <= 定価 * 10% 入力タイトル = "値引き額を" エラータイトル = "値引きオーバー" 入力メッセージ = "定価の 10%以内で" エラーメッセージ = "定価の 10%が限度です" 日本語入力 = xlIMEModeOff 'オフ(英語モード) 入力規則を設定する End Sub '----------------------------------------------------------------------------------------- Private Sub OptionButton2_Click() セル範囲 = "F8:F12" '対象セルを指定する 入力規則をすべてクリアする End Sub '----------------------------------------------------------------------------------------- Private Sub UserForm_Deactivate() Unload Me End Sub '----------------------------------------------------------------------------------------- Private Sub 入力規則を設定する() '◆◆◆ Application.ScreenUpdating = False '画面を更新しない ActiveSheet.Unprotect 'シート保護を解除する ' Range(セル範囲).Select '対象セルを選択する 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 ' 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 '=========================================================================================