Как в функции по имени ячейки вернуть ее значение ?(+)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alex_V
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 29.03.2004 (Пн) 13:42

Как в функции по имени ячейки вернуть ее значение ?(+)

Сообщение Alex_V » 29.03.2004 (Пн) 13:54

Я присвоил куче ячеек имена (Name) ( по их логическому смыслу)

Хочу написать функцию, которая берет в качестве параметра имя ячейки, и возращает либо ее значение, либо 0 ,если такого имени не существует.
Подскажите, как сделать ?
Если имя существует, все OK
А если нет то #знач

Пробовал проверку на IsError и VarType - не получается.
Alex

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.03.2004 (Пн) 13:59

=ЕСЛИ(ЕОШ(имя_ячейки);0;имя_ячейки)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Alex_V
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 29.03.2004 (Пн) 13:42

Сообщение Alex_V » 29.03.2004 (Пн) 14:55

Так это в самом Excel, а мне в макросе функция нужна
Alex

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.03.2004 (Пн) 15:44

Код: Выделить всё
Function func(ByVal RangeName As String, DefaultValue As Variant) As Variant
  func = DefaultValue
  On Error Resume Next
  func = Range(RangeName).Value
End Function
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Alex_V
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 29.03.2004 (Пн) 13:42

Сообщение Alex_V » 29.03.2004 (Пн) 16:33

Спасибо, здесь все OK.
А вот еще проблема - меняешь значение ячейки, на которую зашито имя, а функция не выполняет перерасчет значения .
F9 не помогает . Как заставить ячейки с зашитыми в них формулами , а их может быть много, перерасчитаться.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.03.2004 (Пн) 16:36

Код: Выделить всё
Function func(ByVal RangeName As String, DefaultValue As Variant) As Variant
  application.volatile
  func = DefaultValue
  On Error Resume Next
  func = Range(RangeName).Value
End Function
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Alex_V
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 29.03.2004 (Пн) 13:42

Сообщение Alex_V » 29.03.2004 (Пн) 16:45

Все OK, Большое спасибо !!


Вернуться в Visual Basic 1–6

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

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

    TopList