質問: Excelの入力規則についての質問となるのですが、 Excelのあるセルに入力規則を設定し、 IPアドレスが入力された場合のみ、入力を許可するような動きを 実現したいと考えています。 動きとしては、A1セルに入力規則を指定し、 以下のような数値の場合のみ、入力OKとしたいです。 (セルに全角英字や記号などが入力された場合もNG) [許可] 192.168.1.1 192.168.1.2 [NG] 192.168.101. 256.256.256.256 上記のようなことは、Excelの入力規則の数式などで実現は可能でしょうか? ご教授いただければ幸いです。 よろしくお願いします。
回答: 関数ゴリゴリ書くのもわかりにくいので、標準モジュールに判定関数を書いて、その結果を条件付き書式に設定すればよいかな、とか思いますがどうでしょう? 雑いですが、正しいIP(v4)アドレスならばtrueを返す関数はこんな感じです。 ``` Function IsIPv4Str(TestString As String) 'とりあえず判定結果はNGとする IsIPv4Str = False '「.」で区切る Address = Split(TestString, ".") '区切った結果の配列が4でなければ終了 If UBound(Address) <> 3 Then Exit Function '各要素をチェック For i = 0 To 3 '1要素取り出す Octet = Address(i) '対象の要素が、数値として判別できないか、0より小さいか、255より大きければ、判定終了 If Not (IsNumeric(Octet)) Or Val(Octet) < 0 Or 255 < Val(Octet) Then Exit Function Next 'ここまでの判定が通れば判定結果をOKとする IsIPv4Str = True End Function ```