Home » ExcelVBA Rangeオブジェクト » 入力規則・Validation » VBAで日付のみ入力できる入力規則を設定する

VBAで日付のみ入力できる入力規則を設定する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

アクセスログを眺めていて
「excel vba 入力規則 日付 条件なし」
という検索キーワードに気づきました。

Excel VBA(Visual Basic for Applications)から、データの入力規則を設定して、日付だけ入力できるようにするケースで、

VBAで日付のみ入力できる入力規則を設定する

期間などの条件を指定したくないということでしょう。

[スポンサードリンク]

日付だけ入力できる入力規則を設定するExcelマクロ

VBAのスキルというよりも、Excelのそもそもの仕様を知っているかどうかという問題です。

以下のSubプロシージャを実行すると、アクティブシートのA1:A5セルに、日付だけを入力できる入力規則を設定できます。
Sub 日付だけ入力可能にする入力規則を設定する()
 With Range("A1:A5").Validation
  .Delete
  .Add _
    Type:=xlValidateDate, _
    Operator:=xlGreaterEqual, _
    Formula1:="1900/1/1"
  .ErrorMessage = "日付を入力してください!"
 End With
End Sub

サンプルマクロの解説

そもそもExcelのセルに入力できるもっとも昔の日付は、1900年1月1日です。

このExcel本来の仕様を条件として設定すれば、
「excel vba 入力規則 日付 条件なし」
という状態になります。

VBAで日付のみ入力できる入力規則を設定する

入力規則を設定する操作をマクロ記録すると、以下のようなコードが作られます。


Sub 入力規則を設定する操作をマクロ記録()
 With Selection.Validation
  .Delete
  .Add Type:=xlValidateDate, AlertStyle:=xlValidAlertStop, Operator:= _
  xlGreaterEqual, Formula1:="1/1/1900"
  .IgnoreBlank = True
  .InCellDropdown = True
  .InputTitle = ""
  .ErrorTitle = ""
  .InputMessage = ""
  .ErrorMessage = "日付を入力してください!"
  .IMEMode = xlIMEModeNoControl
  .ShowInput = True
  .ShowError = True
 End With
End Sub

このコードを整理して最低限の状態にしたのが、先のSubプロシージャです。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » 入力規則・Validation » VBAで日付のみ入力できる入力規則を設定する

「入力規則・Validation」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.