Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2009, 17:28   #1
НеВа6464
Пользователь
 
Регистрация: 16.05.2009
Сообщений: 64
По умолчанию Определение диапазона и его выделение

Необходимо одновременно выделить некоторое количество строк и столбцов.
Номера строк и столбцов задаются переменными и могут быть не смежными.
Как в ВБА задаётся такой диапазон?
НеВа6464 вне форума Ответить с цитированием
Старый 23.05.2009, 17:44   #2
pivas
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 412
По умолчанию

Можно так:
Range("2:2,6:6,12:16,20:20").Select для строк.
Range("B:B,D:D,G:J,L:L").Select для столбцов.
pivas вне форума Ответить с цитированием
Старый 23.05.2009, 18:22   #3
НеВа6464
Пользователь
 
Регистрация: 16.05.2009
Сообщений: 64
По умолчанию

Спасибо. Данный пример синтаксиса мне известен. Более того и строки и столбцы можно поместить в тело одного Range.
Range("2:2,6:6,D:D,12:16,L:L,20:20" ).Select
Но дело в том, что номера строк и столбцов заранее неизвестны. Они определяются переменными, которые, в свою очередь, определяются по ходу программы. В принципе можно эти переменные привести к вышеуказанному виду (так я и поступаю иногда), однако мне представляется данный способ несколько корявым.
Думаю, что надо использовать свойства Cells, только мне немного знаний не хватает.))
НеВа6464 вне форума Ответить с цитированием
Старый 23.05.2009, 18:27   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Ну или так:
Код:
Sub test()
    Dim ra As Range, ra2 As Range: Set ra = [a1]: Set ra2 = [a2]
    
    For i = 1 To 30 Step 4: Set ra = Union(ra, Columns(i)): Next i
    'ra.Select ' каждый 4-й столбец
    ra.Interior.ColorIndex = 35

    For i = 2 To 30 Step 3: Set ra2 = Union(ra2, Rows(i)): Next i
    'ra2.Select ' каждая 3-я строка
    ra2.Interior.ColorIndex = 33

    Set ra = Intersect(ra, ra2)    ' пересечение ранее сформированных диапазонов
    'ra.Select
    ra.Interior.ColorIndex = 1
End Sub
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение номера последней строки выделенного диапазона НеВа6464 Microsoft Office Excel 2 17.05.2009 14:36
Выделение диапазона программно Волк Microsoft Office Excel 3 15.03.2009 14:52
проверка диапазона Bezdar Microsoft Office Excel 15 30.07.2008 08:59
выделение жирным шрифтом минимума и максимума из диапазона Bazzer Microsoft Office Excel 11 28.06.2008 18:50
Имя диапазона CAMyM Microsoft Office Excel 8 09.11.2007 10:16