Код:
Function ВернутьБольшееИлиМеньшееИзТрёхЧисел(ByVal ПервоеЧисло As Double, ByVal ВтороеЧисло As Double, ByVal ТретьеЧисло As Double, Optional ByVal ВернутьБольшее As Boolean = True) As Double
Dim Result As Double
Dim arr() As Double
Dim i As Byte
ReDim arr(2)
arr(0) = ПервоеЧисло
arr(1) = ВтороеЧисло
arr(2) = ТретьеЧисло
Result = arr(0)
For i = 1 To UBound(arr)
If ВернутьБольшее Then
If arr(i) > arr(i - 1) Then
Result = arr(i)
End If
Else
If arr(i) < arr(i - 1) Then
Result = arr(i)
End If
End If
Next i
ВернутьБольшееИлиМеньшееИзТрёхЧисел = Result
End Function
Sub ТестНаписаннойФункции()
Dim a As Double
Dim b As Double
Dim c As Double
'Инициализируем генератор произвольных чисел (только для теста вышеприведенной функции)
Randomize
Debug.Print "Тест начат"
'Присвоим стартовые «рандомные» значения трём переменным
a = Rnd() * 100
b = Rnd() * 100
c = Rnd() * 100
Debug.Print "Большее из чисел " & a & ", " & b & ", " & c
'Вызовем функцию «ВернутьБольшееИлиМеньшееИзТрёхЧисел» без 4 параметра (он опциональный, без него она возвращает БОЛЬШее значение из трёх указанных)
Debug.Print ВернутьБольшееИлиМеньшееИзТрёхЧисел(a, b, c)
Debug.Print "Меньшее из чисел " & a & ", " & b & ", " & c
'Вызовем функцию «ВернутьБольшееИлиМеньшееИзТрёхЧисел» указав 4-ым параметром значение False, чтобы она вернула наименьшее значение из трёх указанных
Debug.Print ВернутьБольшееИлиМеньшееИзТрёхЧисел(a, b, c, False)
Debug.Print "Тест завершен"
End Sub
функция «ВернутьБольшееИлиМеньшееИзТрёхЧисел» и есть решение Вашей проблемы
первые 3 параметра числа целые или с плавающей точкой,
а четвертый параметр указывает искать большее (по-умолчанию) или меньшее (при указании четвертым параметром значения False) значение из первых трёх параметров