Страницы: 1
RSS
Конструкция Set в VBA
 
Помоготе разобраться, почему  
 
Sub test123_()  
Dim myRange As Range  
 
' ПОЧЕМУ?  
Set myRange = Range(Cells(1, 1), Cells(2, 5))  
'Эта конструкция работает (в модуле листа 1)  
 
Set myRange = Worksheets("Лист3").Range("A1:B5")  
'Эта тоже работает, в любом модуле)  
 
Set myRange = Worksheets("Лист1").Range(Cells(1, 1), Cells(2, 5))  
Set myRange =Worksheets("Лист3").Range(Cells(1, 1), Cells(2, 5))  
'А эти не работают?  
End Sub  
 
Мне нужно использовать именно Range(Cells(1, 1), Cells(2, 5)) с другого листа. Как это сделать?
 
Конструкция Set myRange = Worksheets("Лист3").Range(Cells(1, 1), Cells(2, 5))  
и не должна работать (разве что только если Лист3 активен)  
 
Правильно будет так:  
 
Set myRange = Worksheets("Лист3").Range(Worksheets("Лист3").Cells(1, 1), Worksheets("Лист3").Cells(2, 5))  
 
 
ну или так:  
 
   With Worksheets("Лист3")  
       Set myRange = .Range(.Cells(1, 1), .Cells(2, 5))  
       ' обратите внимание на точки перед CELLS  
   End With
 
Если надо покороче, то можете попробовать так:  
 
Set myRange = Worksheets("Лист3").Cells(1, 1).Resize(2, 5)
 
{quote}{login=EducatedFool}{date=04.10.2009 06:38}{thema=}{post}Если надо покороче, то можете попробовать так:  
 
Set myRange = Worksheets("Лист3").Cells(1, 1).Resize(2, 5){/post}{/quote}  
Спасибо!    
зы. Мне не очень важно - по-короче или нет... мне важно, что гарантированно работало :). но по-короче, конечно, лучше. :).
 
нашел еще вот такую "конструкцию"  
Set myRange = Worksheets("Лист2").Range(Range(Cells(1, 1), Cells(5, 2)).Address())
Страницы: 1
Читают тему
Наверх