【VBA】書式設定と入力規則設定を施す


日付しか入力出来ないようにする

指定した範囲にyyyy/mm/ddの書式設定と、日付以外入力出来ない入力規則をつけます。

あんまり繰り返し作業することではないかもしれないのですが、以前、複数のシートに入力規則をつけなければならずめんどくさかったのでマクロで設定しました。
またやる時のために書いとこうと思いました。

入力規則の設定内容

・2019/01/01以降の日付のみ入力可能
・セルを選択したら入力時メッセージを表示する
・2019/01/01以降の日付以外を入力したらエラーメッセージを表示する
・日本語入力はオフにする

Sub FormatSetting() '書式設定と入力規則設定を施す
    Dim DateCol As Long 'IDの列番号を格納する変数
    DateCol = WorksheetFunction.Match("登録日", Master.Rows(1), 0) 'Match関数で列数格納
    Dim LastRow As Long '最大行数を格納する変数
    LastRow = Master.Rows.Count '最大行数格納
    Dim TargetRange As Range '書式設定する範囲を格納する変数
    '書式設定する範囲を格納
    Set TargetRange = Master.Range(Master.Cells(2, DateCol), Master.Cells(LastRow, DateCol))

    TargetRange.NumberFormatLocal = "yyyy/mm/dd" '書式設定
    TargetRange.Validation.Delete 'すでに設定されている入力規則を削除
    '2019/01/01以降の日付のみ入力許可
    TargetRange.Validation.Add Type:=xlValidateDate, AlertStyle:=xlValidAlertStop, Operator:=xlGreaterEqual, Formula1:="2019/01/01"
    TargetRange.Validation.IgnoreBlank = True '空白を許可
    TargetRange.Validation.InputTitle = "入力規則" '入力時メッセージタイトル
    TargetRange.Validation.InputMessage = "yyyy/mm/dd形式で入力してください。" '入力時メッセージ文
    TargetRange.Validation.ErrorTitle = "エラー!" 'エラーメッセージタイトル
    TargetRange.Validation.ErrorMessage = "2019/01/01以降の日付をyyyy/mm/dd形式で入力してください。" 'エラーメッセージ文
    TargetRange.Validation.IMEMode = xlIMEModeOff '日本語入力をオフ

    MsgBox "書式設定と入力規則設定が完了しました!"
End Sub

【実行結果】

ワタシ流こだわり

今回のようなマクロはWith使う方もたくさんいますよね?
ワタシはWith使わない派です!

あとワタシいつもRangeの指定は

Set TargetRange = Master.Range(Master.Cells(2, DateCol), Master.Cells(LastRow, DateCol))

こうするんですけど、長いですよね
どのセルからどのセルまでってのが理解しやすくて…

分かりやすくていい指定のしかたたくさんあると思うんですが
みなさんどうしてますか?