【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))
こうするんですけど、長いですよね
どのセルからどのセルまでってのが理解しやすくて…
分かりやすくていい指定のしかたたくさんあると思うんですが
みなさんどうしてますか?
Author And Source
この問題について(【VBA】書式設定と入力規則設定を施す), 我々は、より多くの情報をここで見つけました https://qiita.com/KaoTechBlog/items/ff734abe4a7fccf09b3b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .