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


Автор: termik 22.12.2006, 12:50
Пользовательская функция с параметром диапазоном. Написать фунцию, которая возращает количество дней между минимальной и максимальной датой диапазона ячеек с датами (используйте обычный математический оператор разность). Напишите комментариии и сходинки пожалуйста. 

Автор: Rodman 22.12.2006, 13:28
termik, заглянь в http://www.microsoft.com/Rus/Msdn/Activ/MSVB/Archive/Data/DateTime/288.mspx... 

Автор: Aloha 22.12.2006, 13:57
termik
Код
Public Function ЧИСЛОДНЕЙ(Массив As Range)
  Dim v_MinDate, v_MaxDate        'объявляем переменные
  'присваеваем v_MinDate значение первой ячейки диапазона
  v_MinDate = Массив.Cells(1, 1)
  For Each x In Массив            'цикл по ячейкам диапазона
    'ищем значения максимальной и минимальной даты
    'если значение текущей ячейки меньше v_MinDate, то
    'v_MinDate = значению текущей ячейки
    If x < v_MinDate Then v_MinDate = x
    'если значение текущей ячейки больше v_MaxDate, то
    'v_MaxDate = значению текущей ячейки
    If x > v_MaxDate Then v_MaxDate = x
  Next
  'Возвращаемое функцией значение равно разности максимальной
  'и минимальной дат (целое число)
  ЧИСЛОДНЕЙ = CLng(v_MaxDate - v_MinDate)
End Function

Автор: Genyaa 22.12.2006, 14:15
Для Ексела можно сделать и так:

Код

Public Function myFunction(Массив As Range) as Long
'пользовательская функция определения разницы в днях между максимальной и минимальной датой в области ячеек, передаваемой в функцию в качестве аргумента
'
'определяем разницу между максимальным и минимальным значением, поиск которых осущестляется с помощью встроенных функций Ексела max и min
    myFunction = WorksheetFunction.Max(Массив) - WorksheetFunction.Min(Массив)
End Function

Автор: termik 23.12.2006, 00:22
Спасиб алоха получил +

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