Страницы: 1
RSS
VBA передача параметра типа Range в метод класса
 
уважаемый доброфорум, прошу помощи с одной ситуацией.  
имеется класс DataList в котором есть метод    
Public Sub SetDataList(SourceRange As Range)  
 
В коде модуля пытаюсь передать в этот метод объект типа Range  
MyDataList.SetDataList (Range("A1:A6"))  
 
При исполнении вылетает ошибка:  
Run-time error '424':  
Object required
 
Вы или файл не тот прикрепили, или я чего-то не понимаю  
(в прикреплённом файле нет ни намёка на модуди класса, и приведённый вами код)  
 
Причин ошибки может быть несколько:  
1) не создан экземпляр класса DataList (MyDataList = Nothing)  
2) ошибка внутри процедуры Public Sub SetDataList  
3) нет активного листа - Range("A1:A6") дает ошибку  
4) может, убрать скобки?  MyDataList.SetDataList Range("A1:A6")  
 
 
Прикрепите «правильный» файл - посмотрим.
 
{quote}{login=excellerator}{date=26.09.2012 11:42}{thema=VBA передача параметра типа Range в метод класса}{post}...имеется класс DataList в котором ...  
... пытаюсь передать в этот метод объект типа Range  
MyDataList.SetDataList (Range("A1:A6"))  
 
При исполнении вылетает ошибка:  
Run-time error '424':  
Object required{/post}{/quote}  
Обратите ещё внимание на то, что класс назван DataList, а в коде используется другое название MyDataList
 
Да, не тот файл, спасибо! Во вложении верный файл
 
{quote}{login=EducatedFool}{date=26.09.2012 12:04}{thema=}{post}Вы или файл не тот прикрепили, или я чего-то не понимаю  
(в прикреплённом файле нет ни намёка на модуди класса, и приведённый вами код)  
 
Причин ошибки может быть несколько:  
1) не создан экземпляр класса DataList (MyDataList = Nothing)  
2) ошибка внутри процедуры Public Sub SetDataList  
3) нет активного листа - Range("A1:A6") дает ошибку  
4) может, убрать скобки?  MyDataList.SetDataList Range("A1:A6")  
 
 
Прикрепите «правильный» файл - посмотрим.{/post}{/quote}  
 
Уже вижу, что п.4 сработал  
и п.2. сработал: в процедуре пытаюсь очистить переменную типа комбобокс.
 
но не понимаю, почему не работает    
mComboBox.AddItem (tmp)    
 
в той же самой процедуре.  
mComboBox объявлен в классе как  
 
Private mComboBox As ComboBox  
 
В инициализации присваиваю    
Set mComboBox = Nothing  
 
А затем прогоняю по всем ячейкам range и делаю добавление:  
   Dim tmp As Variant  
   For Each tmp In ContentList  
       mComboBox.AddItem (tmp)  
   Next tmp  
 
И тут выскакивает Run-time error '91'  
Object variable or with block variable is not set  
 
Опять не знаю, что делать.    
 
Выскакивает ошибка
 
<< В инициализации присваиваю    
Set mComboBox = Nothing  
 
А затем прогоняю по всем ячейкам range и делаю добавление:  
Dim tmp As Variant  
For Each tmp In ContentList  
mComboBox.AddItem (tmp)  
Next tmp  
>>  
 
Ну разумеется, у "ничто" нет метода или свойства AddItem :))Наверно, при инициализации надо  
 
Set mComboBox = userform1.combobox1
 
{quote}{login=Казанский}{date=26.09.2012 02:59}{thema=}{post}  
 
Ну разумеется, у "ничто" нет метода или свойства AddItem :))Наверно, при инициализации надо  
 
Set mComboBox = userform1.combobox1{/post}{/quote}  
 
Ага, спасибо!
Страницы: 1
Читают тему
Наверх