Выбор колонки в несвязанном диапазоне

Программирование на Visual Basic for Applications
Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Выбор колонки в несвязанном диапазоне

Сообщение Calvin » 14.05.2008 (Ср) 11:41

Здраствуйте уважаемые!
Есть несвязанный диапазон. Например
Код: Выделить всё
Set Myrange=Union(rows(1),rows(3),rows(5))

Нужно получить адрес этого диапазона, но в пределах колонки(2)
Типа так:
Код: Выделить всё
MyAdr=Myrange.Columns(2).address(0,0)


но определяется только адрес колонки 2 из первой области (Areas)....как решить, чтобы в итоге MyAdr="B1,B3,B5" ?
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 14.05.2008 (Ср) 16:08

Может так?

Код: Выделить всё
Sub test()
    Dim myRange As Range
    Set myRange = Union(Rows(1), Rows(3), Rows(5))
    MsgBox Intersect(myRange, myRange.Columns(2).EntireColumn).Address
End Sub
Привет,
KL

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 16.05.2008 (Пт) 16:18

Спасибо...просто супер! А что это за свойство EntireColumn ?
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 19.05.2008 (Пн) 20:14

Calvin писал(а):Спасибо...просто супер! А что это за свойство EntireColumn ?


Это свойство объекта Range и возвращает объект Range целых столбцов, т.е. для [A1] - [A:A], для [B1:D20] - [B:D] и т.д.
Последний раз редактировалось KL 22.05.2008 (Чт) 15:31, всего редактировалось 1 раз.
Привет,
KL

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 21.05.2008 (Ср) 12:20

Вот с толкнулся еще с одной проблемой - нужно получить количество сток Интерсекта
Код: Выделить всё
rc=Intersect(myRange, myRange.Columns(2).EntireColumn).rows.count

но что-то не получается
Я идиот! Убейте меня, кто-нибудь!
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 21.05.2008 (Ср) 16:57

Calvin писал(а):Вот с толкнулся еще с одной проблемой - нужно получить количество сток Интерсекта
Код: Выделить всё
rc=Intersect(myRange, myRange.Columns(2).EntireColumn).rows.count

но что-то не получается
Я идиот! Убейте меня, кто-нибудь!


Если myRange формируется из целых строк, то наверное проще так:

Код: Выделить всё
rc=myRange.Areas.Count
Привет,
KL

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 21.05.2008 (Ср) 17:44

ну это если в каждом несвязанном диапазоне по одной строчке, то пойдет, а если больше, то кирдык...
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 22.05.2008 (Чт) 15:30

А так?

Код: Выделить всё
Sub test()
    Dim myRange As Range
    Set myRange = Union(Rows(1), Rows("3:4"), Rows(5))
    MsgBox Intersect(myRange, myRange.Columns(2).EntireColumn).Cells.Count
End Sub
Привет,
KL

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 22.05.2008 (Чт) 18:04

Просто бомба!!! :D Спасибо
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D


Вернуться в VBA

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

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

    TopList  
cron