' Keep the first argument in the range [lowLimit, highLimit]' If the value is adjusted, the fourth (optional) argument is set to True'' This function works will all basic data types and with objects ' that implement the IComparable interfaceFunction KeepInRange(ByVal value As Object, ByVal lowLimit As Object, _ ByVal highLimit As Object, Optional ByRef OutOfRange As Boolean = False) As _ Object ' we leverage the IComparable interface Dim icomp As IComparable = DirectCast(value, IComparable) If icomp.CompareTo(lowLimit) < 0 Then OutOfRange = True Return lowLimit ElseIf icomp.CompareTo(highLimit) > 0 Then OutOfRange = True Return highLimit Else OutOfRange = False Return value End IfEnd Function