Проблема с формулами

Программирование на Visual Basic for Applications
Павел_В
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 09.07.2005 (Сб) 9:52

Проблема с формулами

Сообщение Павел_В » 10.09.2005 (Сб) 13:41

Пишу вот такую байду.

Sh.Range("$A$1").Formula = "=FUNC(" & Sh.Range("$A$2").Value & ", A4,A5)"

FUNC = это моя функция (к примеру склеивает три числа)

Так вот когда это простые числа или тект, то все ок, но если если это дробные числа, напрмер - 1,5.
То Excel понимает 1,5 как два параметра, т.е. вобщем получается 4 (так как запись в таком случае идет через знак ","), в чем прикол, помогите вывернуться.

Павел_В
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 09.07.2005 (Сб) 9:52

Сообщение Павел_В » 12.09.2005 (Пн) 8:57

Неужели никто не знает, такого быть не может, помогите плиз !!!

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

Сообщение uhm » 12.09.2005 (Пн) 9:10

Обычная проблема с разделителем целой и дробной части числа.

Если ты напишешь так:

Код: Выделить всё
Replace(Sh.Range("$A$2").Value, ",", ".")


вместо просто Sh.Range("$A$2").Value, у тебя, скорее всего, все заработает. Это, впрочем, не совсем корректно, поскольку в региональных настройках разделителем может быть не запятая, а что-то еще. Про то, как определить этот разделитель совсем правильно, обсуждалось здесь:

http://bbs.vbstreets.ru/viewtopic.php?t=18126
Быть... или не быть. Вот. В чём вопрос?

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 12.09.2005 (Пн) 12:35

Текст твоей функции, плиз!

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

Сообщение uhm » 12.09.2005 (Пн) 12:53

Не-е, там дело не в тексте функции. После выполнения того макроса, который был в исходном сообщении, в ячейке будет написано

=FUNC(1;5; A4;A5)

вместо

=FUNC(1,5; A4;A5)
Быть... или не быть. Вот. В чём вопрос?

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 12.09.2005 (Пн) 12:59

Я имел ввиду код функции!..

Sh.Range("$A$1").Formula = "=FUNC(" & Sh.Range("$A$2").text & "; A4;A5)"

или так
Sh.Range("$A$1").value = "=FUNC(" & Sh.Range("$A$2").text & "; A4;A5)"

и вообще, зачем там вместо точек с запятой ";" запятые ","!

sergeyvg
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 16.08.2005 (Вт) 9:27

Сообщение sergeyvg » 12.09.2005 (Пн) 15:39

сильно не думая, предлагаю так:)
Sh.Range("$A$1").Formula = "=FUNC(""" & Sh.Range("$A$2").Value & """, A4,A5)"

Павел_В
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 09.07.2005 (Сб) 9:52

Сообщение Павел_В » 15.09.2005 (Чт) 8:43

sergeyvg Добавлено: 12.09.2005 (Пн) 15:39 Заголовок сообщения:

--------------------------------------------------------------------------------

сильно не думая, предлагаю так:)
Sh.Range("$A$1").Formula = "=FUNC(""" & Sh.Range("$A$2").Value & """, A4,A5)"




Но в этом случае, все чтобы ты не написал будет восприниматься в текстовом формате, а это не правильно.

Павел_В
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 09.07.2005 (Сб) 9:52

Сообщение Павел_В » 15.09.2005 (Чт) 8:49

Я имел ввиду код функции!..
Sh.Range("$A$1").Formula = "=FUNC(" & Sh.Range("$A$2").text & "; A4;A5)"
или так
Sh.Range("$A$1").value = "=FUNC(" & Sh.Range("$A$2").text & "; A4;A5)"
и вообще, зачем там вместо точек с запятой ";" запятые ","!

А в этом случае вообще работать не будет, так как передача параметров в функцию идет через запятые........


Вернуться в VBA

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 85

    TopList  
cron