Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [VBA] Диапазон чисел


Автор: Ki11eR0k 19.12.2006, 12:29
Всем привет.Помогите написать пользоваетльскую функцию с параметром диапозона и нужно найти произведение самого большого на самое маленькое число диапазона.
Заранее спасибо.

Автор: Aloha 19.12.2006, 15:49
Ki11eR0k

Код
Public Function myFunction(Массив As Range) As Double
  Dim v_Min, v_Max
  v_Min = Массив.Cells(1, 1)
  For Each x In Массив
    If x < v_Min Then v_Min = x
    If x > v_Max Then v_Max = x
  Next
  myFunction = CDbl(v_Min * v_Max)
End Function


или так:
Код
Public Function myFunction(Массив As Range) As Double
  Dim v_TmpArray(), v_Min, v_Max, n, m
  v_TmpArray = Массив
  v_Min = v_TmpArray(1, 1)
  For n = 1 To UBound(v_TmpArray, 1)
    For m = 1 To UBound(v_TmpArray, 2)
      If v_TmpArray(n, m) < v_Min Then v_Min = v_TmpArray(n, m)
      If v_TmpArray(n, m) > v_Max Then v_Max = v_TmpArray(n, m)
    Next m
  Next n
  myFunction = CDbl(v_Min * v_Max)
End Function

Автор: Ki11eR0k 21.12.2006, 08:08
Aloha cпасибо большое. Всё работает. Но есть пару вопросов:
1. Что обозначает Public Function?
2. Что обозначает myFunction = CDbl(v_Min * v_Max)?

Автор: Genyaa 21.12.2006, 23:40
1. При таком объявлении функции ее можно использовать в ячейках Эксела, как любую другую его встроенную функцию. Например в ячейку можно написать:

=myFunction(A1:B200)

Public - значит - публичная, т.е. та, которая доступна из любого другого модуля проекта (книги).

2. Это собственно присвоение результата вычисления имени функции, который и возвращается в качестве результата функции. А CDbl - это функция преобразования типа данных резульатата умножения в тип Double - двойная длина числа с плавающей точкой.

Автор: Ki11eR0k 22.12.2006, 01:29
Genyaa.Спасибо за пояснение.Теперь всё понятно стало.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)