整数かどうか、またその範囲をチェックする関数
整数かどうかを一発チェックしてくれる関数を探していたのですが見つからず。
…えっ、本当にない…? いやあるでしょ…?
しかし見つからなかったので、とりあえず作りました。誰か知ってたら教えてください。
せっかくなので範囲チェックもやってくれるオマケ付きです。
で、「範囲チェックが不要なときもあるので、引数の最小値・最大値が省略されたかどうか」を調べる方法を探し…
IsMissingという関数で調べることは可能というのは分かったのですが、引数がVariantでなければならない様子。うーむ…
参考
VB6・VBA関数メモ:IsMissing関数 | フィロの村note
関数
Private Function checkLong(ByVal vNum As Variant, Optional ByVal lMinNum, Optional ByVal lMaxNum) If CLng(vNum) <> vNum Then ' 引数が整数でない場合FALSE checkLong = False Exit Function End If If IsMissing(lMinNum) = False Then ' 最小値が指定されている場合 If vNum < lMinNum Then ' 引数が最小値を下回っている場合FALSE checkLong = False Exit Function End If End If If IsMissing(lMaxNum) = False Then ' 最大値が指定されている場合 If lMaxNum < vNum Then ' 引数が最大値を上回っている場合FALSE checkLong = False Exit Function End If End If checkLong = True End Function
使用例
Debug.Print checkLong(5) ' True :整数 Debug.Print checkLong(3.1) ' False:整数でない Debug.Print checkLong(5, 1, 9) ' True :整数(1~9の範囲内) Debug.Print checkLong(5, 6, 9) ' False:整数(6~9の範囲外)