以外にも、小数点以下があれば小数点を表示するというVBAが中々うまくいかなかったので備忘録。(A1が対象セルです)
結論として、入力規則を2つ定義するイメージです。
1つ目は小数点ありの場合、2つ目は小数点がない場合の入力規則です。
Dim xlFormatCondition As FormatCondition, xlFormatConditions As FormatConditions
Dim r As Range: Set r = Range(“A1”)
If r.FormatConditions.Count > 0 Then
For Each xlFormatCondition In r.FormatConditions
xlFormatCondition.Delete
Next
End If
Set xlFormatConditions = r.FormatConditions
‘小数点ありの場合の入力規則
Set xlFormatCondition = xlFormatConditions.Add(Type:=xlExpression, Operator:=xlLess, Formula1:=”=IF(RIGHT(TEXT(A1,””0.#””),1)=””.””,FALSE,TRUE)”)
xlFormatCondition.NumberFormat = “#,##0.#;[赤]-#,##0.##”
xlFormatCondition.SetFirstPriority
xlFormatCondition.StopIfTrue = True
‘小数点無しの場合の入力規則
Set xlFormatCondition = xlFormatConditions.Add(Type:=xlExpression, Operator:=xlLess, Formula1:=”=IF(RIGHT(TEXT(A1,””0.#””),1)=””.””,TRUE,FALSE)”)
xlFormatCondition.NumberFormat = “#,##0;[赤]-#,##0”
xlFormatCondition.SetFirstPriority
xlFormatCondition.StopIfTrue = True
蛇足
入力規則で制限する場合
With Selection.Validation
.Delete
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertInformation, Operator:= _
xlBetween, Formula1:=”=A1*100=INT(A1*100)”
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = “”
.ErrorTitle = “小数点以下入力桁数エラー”
.InputMessage = “”
.ErrorMessage = “小数点以下は2桁まで入力可能です。”
.IMEMode = xlIMEModeAlpha
.ShowInput = True
.ShowError = True
End With
・Type 必ず指定します。入力規則の種類を指定します。
xlValidateInputOnly:すべての値
xlValidateWholeNumber:整数
xlValidateDecimal:小数点
xlValidateTextLength:文字列(長さ指定)
xlValidateList:リスト
xlValidateDate:日付
xlValidateTime:時刻
xlValidateCuestcm:ユーザー設定
・AlertStyle 省略可能です。入力規則でのエラーのスタイルを指定します。
xlValidAlertStop:停止
xlValidAlertWarning: 注意
xlValidAlertInformation:情報
・Operator 省略可能です。入力規則での演算子を指定します。
xlBetween:Formula1とFormula2の間
xlEqual:Formula1と等しい
xlGreater:Formula1より大きい
xlGreaterEqual:Formula1以上
xlLess:Formula1より小さい
xlLessEqual:Formula1以下
xlNotBetween:Formula1とFormula2の間以外
xlNotEqual:Formula1と異なる
・Formula1 省略可能です。データの入力規則での条件式の最初の部分を指定します。
・Formula2 省略可能です。データの入力規則での条件式の 2 番目の部分を指定します。
引数OperatorがxlBetweenまたはxlNotBetween以外の場合、この引数は無視されます。
参考
https://qiita.com/Q11Q/items/f035b383620eb308bc2b
https://excel-ubara.com/excelvba1/EXCELVBA391.html
https://hipstergate.jp/column/%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3%E5%BF%8D%E6%B3%95%E5%B8%96%EF%BD%9E%E5%B0%8F%E6%95%B0%E7%82%B9%E4%BB%A5%E4%B8%8B%E3%81%8C%E3%81%82%E3%82%8B%E6%99%82%E3%81%A0%E3%81%91%E8%A1%A8%E7%A4%BA%E3%81%99/