Excel макрос - Run Time Error 1004 HELP!

Программирование на Visual Basic for Applications
Romanaerl
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 09.10.2003 (Чт) 13:21

Excel макрос - Run Time Error 1004 HELP!

Сообщение Romanaerl » 09.10.2003 (Чт) 13:32

Существует прайс-лист т.е. множество строчек в одном из столбцов должна быть формула - каждый раз разная.

Вставляю ее циклом в скросе в нужную ячейку без знака "=", но как только пытаюсь вставить перед формулой знак "=", чтобы эксель посчитал ее именно формулой - тут же выкидывает ошибку Run Time 1004.

Что делать? Как лечится/обходится?
Формулу проверял - по крайней мере вставляя знак равенства "ручками" - все в идеале. :-\

Помогите - запарился совсем.
я не программер - я только учусь :)

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 09.10.2003 (Чт) 13:43

А ты в какую проперть ячейки формулу то вставляешь? В смысле что код кинь, который не работает.

Romanaerl
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 09.10.2003 (Чт) 13:21

Сообщение Romanaerl » 09.10.2003 (Чт) 14:14


ActiveCell.Value = ""
For i = 1 To zad
ActiveCell.Value = ActiveCell.Value & final1(i)
Next i
rem До этого момента - все в норме. Если подставить "=" руками - все ОК, а вот на следующей строке - ошибка
ActiveCell.Formula = "=" & ActiveCell.Value
я не программер - я только учусь :)

Romanaerl
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 09.10.2003 (Чт) 13:21

Сообщение Romanaerl » 09.10.2003 (Чт) 14:20

К моменту вставки формула выглядит так:
ЕСЛИ(СУММ(I:I)<5000;E21;"")
Это только маленькая часть большой формулы, но и она не работает. :(
я не программер - я только учусь :)

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

Сообщение Vitaly1 » 09.10.2003 (Чт) 14:37

Может быть копить формулу в переменную

S = "="
For i = 1 To zad
S = S & final1(i)
Next i
ActiveCell.Formula =S

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 09.10.2003 (Чт) 14:51

Хм.. странная какая то тема. Вылетающая ошибка означает Application defined or object defined error. В переводе примерно что то типа "нифига не ясно что за глюк".

Я думаю что проблема в синтаксисе формулы, не иначе.

Потому что на простое присвоение типа =1+1 все реагирует нормально.

Romanaerl
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 09.10.2003 (Чт) 13:21

Сообщение Romanaerl » 09.10.2003 (Чт) 15:04

Результат тот же.... никакой разницы.
я не программер - я только учусь :)

Romanaerl
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 09.10.2003 (Чт) 13:21

Сообщение Romanaerl » 09.10.2003 (Чт) 15:07

RayShade писал(а):Хм.. странная какая то тема. Вылетающая ошибка означает Application defined or object defined error. В переводе примерно что то типа "нифига не ясно что за глюк".
Я думаю что проблема в синтаксисе формулы, не иначе.
Потому что на простое присвоение типа =1+1 все реагирует нормально.

угу и на =А1 например - тоже все ОК,
а вот с этой формулой - заморочка. Было правда подозрение на кавычки - поигрался ими - тоже без результата. Есть какой нибудь аналог пустым кавычкам? Что нибудь вроде NULL?

Или может быть перекинуть в формат R1C1?
я не программер - я только учусь :)

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

Сообщение Vitaly1 » 09.10.2003 (Чт) 15:15

Эти двойные кавычки ты как в массис вбил?
Их надо внутри кавычки повторять:
s= """" ( в S попадет символ " )
или использовать функцию CHR получения символа по его коду:
s= chr(34) ( в S попадет символ " )

Romanaerl
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 09.10.2003 (Чт) 13:21

Сообщение Romanaerl » 09.10.2003 (Чт) 15:27

Огромное спасибо всем, кто откликнулся на просьбу - нет ничего лучше мозгового штурма. А ларчик просто открывался: в формуле нельзя было ставить ";" а менять его на "," - все заработало. Хотя в примерах и записях самого макроса (нажал запись, сделал, посмотрел макрос) - было именно ";"...

Но вроде теперь все ОК!

Один вопрос еще - какие ограничения накладывает ВБ на длинну строковой переменной?
Если ряд формул (а они накапливаются) будет превышать 255 символов - возникнут ли у меня проблемы?
я не программер - я только учусь :)

Romanaerl
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 09.10.2003 (Чт) 13:21

Сообщение Romanaerl » 09.10.2003 (Чт) 15:28

Vitaly1 писал(а):Эти двойные кавычки ты как в массис вбил?
Их надо внутри кавычки повторять:
s= """" ( в S попадет символ " )
или использовать функцию CHR получения символа по его коду:
s= chr(34) ( в S попадет символ " )

Добавляются еще в приложении VFP потом экспортируются в эксель как таблица, где их подхватывает макрос. :)
я не программер - я только учусь :)

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

Сообщение Vitaly1 » 09.10.2003 (Чт) 15:35

Ну вообщим ты кавычки не довел как то (см. предыдущее мое сообщение)

так ошибка о которой ты гутарил:
ActiveCell.Value = "ЕСЛИ(A1<B1;E1;"")"
ActiveCell.Formula = "=" & ActiveCell.Value

а так нет:
ActiveCell.Value = "ЕСЛИ(A1<B1;E1;"""")"
ActiveCell.Formula = "=" & ActiveCell.Value

или где-то ляпа в формуле, третьего не дано!

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

Сообщение Vitaly1 » 09.10.2003 (Чт) 15:43

Если ряд формул (а они накапливаются) будет превышать 255 символов - возникнут ли у меня проблемы?


Строковая переменная превышает длину 255 байт, вроде 1,5 Гб ее максимальная длина, а сколько можно записать байтов в ячейку не знаю.

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

Сообщение Vitaly1 » 09.10.2003 (Чт) 15:50

Много влезает, но не ставь текстовый формат ячейки, а ставь общий, эта программа выдала 793:

Sub dgdhd()

ActiveCell.Value = "R"
For i = 1 To 300
ActiveCell.Value = ActiveCell.Text + CStr(i)
Next i
MsgBox Len(ActiveCell.Text)

End Sub
Последний раз редактировалось Vitaly1 09.10.2003 (Чт) 15:57, всего редактировалось 1 раз.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 09.10.2003 (Чт) 15:56

Не 1.5ГБ а ровно 2ГБ :wink:

Romanaerl
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 09.10.2003 (Чт) 13:21

Сообщение Romanaerl » 09.10.2003 (Чт) 16:29

Vitaly1 писал(а):Много влезает, но не ставь текстовый формат ячейки, а ставь общий
End Sub

Так в текстовом он и формулу считать не будет....
я не программер - я только учусь :)


Вернуться в VBA

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

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

    TopList