フォームの入力内容チェック(いわゆるバリデーション)などで、値が特定の文字種(たとえば半角数字と半角コンマ)だけからなるかどうかを判定したい場合があります。
VBAでは正規表現を使うことも可能ですが、参照設定などがやや面倒です。Instr
関数を文字種の数だけループしてもいいのですが、ここでは Like
演算子だけで判定する関数を作ってみました。
ConsistsOnlyOf.bas
Function ConsistsOnlyOf(str As String, chars As String) As Boolean
ConsistsOnlyOf = Not str Like "*[!" & chars & "]*"
End Function
str
には判定対象の文字列、chars
には含まれる文字を列記します。0123456789
のかわりに 0-9
のような形が使えます。たとえば半角数字と半角コンマのみであれば 0-9,
とします。
Example_ConsistsOnlyOf.bas
ConsistsOnlyOf("1,2,3", "0-9,") 'True
ConsistsOnlyOf("1,2,3", "0-9,") 'False