Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2009, 00:58   #1
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
Стрелка Проблема с присваиванием в формуле

Странная проблема: при попытке присвоить формуле в какой-то ячейке формулу, содержащую точку с запятой, появляется ошибка "Application-defined or object-defined error".
Пример:

Range("A1").Formula = "=" + "МАКС(A1; B2)"

И так с другими функциями тоже (напр., пользовательскими).
Что за глюк?

p.s. если заменить ; на запятую ,то формула появляется, но пишет "Нераспознанный текст"

Последний раз редактировалось motorway; 22.07.2009 в 01:32.
motorway вне форума Ответить с цитированием
Старый 22.07.2009, 05:30   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Во-первых, у Вас циклическая ссылка. Т.е. Вы пытаетесь в формулу подставить результат формулы.
Во-вторых, в VBA используется не ";", а ",". Нужно так:
Код:
Range("C1").Formula = "=MAX(A1,B2)"
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 22.07.2009, 14:31   #3
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Мне нужно поместить в ячейку пользовательскую функцию, где разделители - точки с запятой: =A(x1; ...; xn). Но запятые там могут тоже встречаться. Как это сделать, чтобы точки с запятой не пропали, там где они были, чтобы и остались?
motorway вне форума Ответить с цитированием
Старый 22.07.2009, 14:43   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если Вы объявите пользовательскую функцию, например,
Код:
Function Test(x As Long, y As Range, z As String)
    '''
End Function
то при использовании ее в ячейках рабочего листа параметры x, y и z, по умолчанию как раз и потребуется разделять точкой с запятой. Т.е. так =Test(x1; x2; x3)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 22.07.2009, 15:19   #5
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Чтобы было понятнее, посмотрите, пожалуйста, файл. Там ошибка. Нужно, чтобы работало, иначе это для меня катастрофа
Вложения
Тип файла: rar Книга2.rar (13.2 Кб, 6 просмотров)
motorway вне форума Ответить с цитированием
Старый 22.07.2009, 15:39   #6
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

М.б., достаточно просто добавить b = Replace(b, ";", ",")?
motorway вне форума Ответить с цитированием
Старый 22.07.2009, 16:29   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

правильно:
Код:
Range("A1").Formula = "=A(" + Replace(Range("A1").Comment.Text, ";", ",") + ")"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 23.07.2009, 04:45   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Может я Вас не правильно понимаю? Посмотрите вложение.
Вложения
Тип файла: rar Книга2_2.rar (12.3 Кб, 12 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в формуле Sasuke-sama Microsoft Office Excel 4 26.05.2009 23:39
Вопрос по формуле Philipok Microsoft Office Excel 4 09.10.2008 10:10
Условие в формуле Shavminator Microsoft Office Excel 3 13.02.2008 19:18