Проблема с пользовательской функцией

Программирование на Visual Basic for Applications
BelkaJul
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 23.08.2005 (Вт) 14:40
Откуда: Ростов-на-Дону

Проблема с пользовательской функцией

Сообщение BelkaJul » 28.09.2005 (Ср) 11:43

Здраствуйте!
Работаю в Excel 2003
Требуется:
при определенном значении в ячейке 1 записывать в ячейку 2 определённый текст.

Среди стандартных функций Excel подобного не нашла.
Пытаюсь сделать пользовательскую функцию.

Код: Выделить всё
Function Laz(address_Source As Range, num As Double, address_To As Range, str_To As String)
  If address_Source.Value = num Then
    address_To.Value = str_To
  End If
  Laz = ""
End Function


т.е. если значение в ячейке, указанной первым параметром (address_Source As Range) равно второму параметру (num As Double),
то хочу в ячейку, указанную третим параметром (address_To As Range) записать четвёртый параметр (str_To As String)

Не работает. :cry:

Пробовала такой вариант:

Код: Выделить всё
Function Laz(address_Source As Range, num As Double, address_To As Range, str_To As String) as String
  If Range(address_Source.Address(False, False)).Value = num Then
    Range(address_To.Address(False, False)).Value = str_To
  End If
  Laz = ""
End Function


тоже не подходит.

И ещё что странно, под отладкой - программа до строки
Код: Выделить всё
Laz = ""

НЕ ДОХОДИТ!


Вызываю функцию таким образом

=Laz(A4;7;A14;"3333332")

В ячейке отображается "#ЗНАЧ!" (ошибка в значении).

ЧТО Я ДЕЛАЮ не так?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 28.09.2005 (Ср) 12:05

Да что это за нашествие такое.
Пользовательские функции не могут менять значения ячеек листа или их форматирование, они могут только возвращать результат.
Запускать свою функцию не как пользовательскую функцию, а как макрос.
Lasciate ogni speranza, voi ch'entrate.

BelkaJul
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 23.08.2005 (Вт) 14:40
Откуда: Ростов-на-Дону

Сообщение BelkaJul » 28.09.2005 (Ср) 13:23

Но если мне не изменяет память - в макрос я НЕ МОГУ передать параметры :cry:

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 28.09.2005 (Ср) 13:27

Ты не хочешь возвращать значение для той ячейки, которую хотела бы изменить? Т. е. именно в той ячейке писать "=LAZ(...)", а то, что раньше было четвертым параметром, возвращать как результат функции?
Быть... или не быть. Вот. В чём вопрос?

BelkaJul
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 23.08.2005 (Вт) 14:40
Откуда: Ростов-на-Дону

Сообщение BelkaJul » 28.09.2005 (Ср) 14:15

общая идея такая:
в ячейку 1 пишем формулу, которая при истине записывает СЮДА же "строку 1", а при лжи - записывает в ячейку 2 "строку 2"

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 28.09.2005 (Ср) 14:38

А если в ячейку_2 написать формулу

=ЕСЛИ(ячейка_1="строка_1";"";"строка_2")

?
Быть... или не быть. Вот. В чём вопрос?

BelkaJul
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 23.08.2005 (Вт) 14:40
Откуда: Ростов-на-Дону

Сообщение BelkaJul » 28.09.2005 (Ср) 15:15

:P :lol: :D

БОЖЕ!!!!!
Я сча-стли-ва!!!!!
Это оно!!!!! Та самая формула! Всё ГЕНИАЛЬНОЕ - просто!!!!!

ОГРОМНОЕ СПА-СИ-БО!!!!!!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 19

    TopList