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


Автор: Ars 28.8.2003, 15:28
Надо написать функцию, которая не только вычисляет значение ячейки, но и изменяет цвет текста
Код

Public Function Mark_Date(aBeginDate, aMonths)
   If aBeginDate <> "" Then
       Mark_Date = DateAdd("m", aMonths, aBeginDate)
       If Date > Mark_Date Then
           Cells(6, 1).Font.Color = RGB(255, 0, 0)
       Else: Cells(6, 1).Font.Color = 0
       End If
   Else: Mark_Date = ""
   End If
End Function

Значение меняется, а цвет - хрен
Подскажите, плз, в чем дело. Заранее спасибо

Автор: Mephisto 28.8.2003, 16:27
Должно изменится. Проверь, Cells(6, 1) это Cell("A6").

Автор: Ars 28.8.2003, 16:44
Цитата
Должно изменится. Проверь, Cells(6, 1) это Cell("A6").

Я понимаю... А6 - это так, для отладки. Просто я еще не знаю, как поиметь доступ к ячейке, в которой вызывается функция, поэтому вбил жестко ячейку, где есть текст... Все равно не работает. А если пытаться изменить содержимое какой-нибудь ячейки, вообще вылетает из функции.

Автор: Ars 4.9.2003, 14:49
Есть, кто волочет в VB для Excel? Подскажите, плз, что за $%*

В ячейке B1 (Cells(1,2)) пишу =Mark_Date_Func()
Код

Public Function Mark_Date_Func()
   If Cells(1, 1).Value <> "" Then
       Mark_Date_Func = DateAdd("m", 12, Cells(1, 1).Value)
       If Date > Mark_Date_Func Then
           Cells(1, 2).Font.Color = RGB(255, 0, 0)
       Else: Cells(1, 2).Font.Color = 0
       End If
   Else: Mark_Date_Func = ""
   End If
End Function

При выполнении цвет не меняется mad.gif
Вызываю ее же из макроса - все нормально!
Код

Public Sub Mark_Date_Sub()
   Cells(1, 2).Value = Mark_Date_Func()
End Sub


Почему функция выполняется по-разному? wow.gif

Автор: Гость_qwe 6.6.2005, 04:21
Как написать в экселе функцию, чтоб она работала как стандартная (т.е. возвращала значение в ячейку, в которую скопирована), или посмотреть как выглядит код одной из стандартных функций?

Автор: Staruha 6.6.2005, 19:59
Функция прописывается автоматически.Надо вставить ее в модуль.А потом выбрать Определенные пользователем.Там появится твоя ф-я.Знак $ означает ,что при копировании адрес не изменится А2 меняется на А3,А4 ,$A$2 - формула при копировании не меняется

Автор: Akina 7.6.2005, 09:05
Макрос вызывает принудительный пересчет.
Для того чтобы значение, в котором используется данная функция, пересчитывалось автоматически, надо первой строкой макроса поставить

Код

Application.Volatile


smile

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