посылание range

Программирование на Visual Basic for Applications
Naug
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 01.10.2004 (Пт) 12:20

посылание range

Сообщение Naug » 01.10.2004 (Пт) 13:39

значит такая проблема:
есть функция
function funcname (s as string, rng as excel.range) as integer
blah
blah
funcname= returnvalue
end function


в которую я пытаюсь запихать:
dim wbook as excel.workbook
set wbook= excel.workbooks.open(filename)
i=funcname("TT", wbook.worksheets(1).Range(cells(1,1),cells(2,2)))

вба мне выдает: runtime error 1004
application defined or object defined error

что я не так делаю?

причем если я просто открываю wbook и посылаю
i=funcname("TT",Range(cells(1,1),cells(2,2)))
всё работает нормально

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 01.10.2004 (Пт) 14:13

Попробуй
function funcname (s as string, rng as excel.range) as integer
заменить на
function funcname (s as string, rng as range) as integer

Naug
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 01.10.2004 (Пт) 12:20

Сообщение Naug » 01.10.2004 (Пт) 14:23

тоже самое.

Фенька оказалась в том что у книги был открыт второй лист и когда я заменил (1) на ("имя") всё исправилось, но хотелось бы знать почему - по закону подлости эта проблема будет вылезать в новых обличиях если до конца не разобраться

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 01.10.2004 (Пт) 15:10

Ты знаешь, я использую лист куда заносятся ошибки обработки данных на других листах, и по-началу перед занесением новой записи делал этому листу
Sheets("Ошибки").Select
Cells(CurrRow, 1).Select
ActiveSheet.Paste

потом, в смысле спустя какое-то время, в начале обработки
Dim ErrSh As Worksheet
Set ErrSh = Sheets("Ошибки")
и когда необходимо
ErrSh.Cells(CurrRow, 1).Active
ErrSh.Paste

Может имеет смысл завести переменную типа Worksheet и тогда запись i=funcname("TT", NeedSheet.Range(cells(1,1),cells(2,2))) будет всегда указывать куда необходимо?
Удачи


Вернуться в VBA

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

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

    TopList  
cron