Страницы: 1
RSS
Как задать выборочный диапозон работы макроса.
 
У меня стоит так:  
 
Dim rng As Range: Set rng = [A3:EV500] ' диапазон Вашей таблицы;
 
Но это диапозон который посто тупо охватывает весь лист с данными, а нужно сделать так чтобы макрос работал только в столбцах B, G, L, Q, V, AA, AF, AK, AP и т.д. отбирая столбцы для работы в соответствии с формулой b=b+4 (где b- номер столбца начиная со 2-го)  
Как можно обозначить выборочно зону действия макроса? (задавая определенную закономерность выбора столбцов или строк. ( через одну или черезз две или еще как? У меня через четыре))  
 
Спасибо.
 
Sub test()  
   Dim ra As Range, rng As Range  
 
   Set ra = Range([A3], Range("A" & Rows.Count).End(xlUp))
   ' это лучше, чем задавать последнюю строку вручную  
   ' а так макрос сам определит последнюю строку таблицы  
 
   ' сейчас ra = [a3:a500]
   Set rng = ra  
   For i = 1 To 12  
       ' в цикле добавляем к RNG диапазон ra= [a3:a500],
       ' смещёный враво на нужное количество столбцов  
       Set rng = Union(rng, ra.Offset(, i * 4))  
   Next  
   Debug.Print rng.Address  
   rng.Select  
End Sub  
 
 
Результат работы макроса - переменная RNG ссылается на диапазон  
$A$3:$A$500,$E$3:$E$500,$I$3:$I$500,$M$3:$M$500,$Q$3:$Q$500,$U$3:$U$500,$Y$3:$Y$500,$AC$3:$AC$500,$AG$3:$AG$500,$AK$3:$AK$500,$AO$3:$AO$500,$AS$3:$AS$500,$AW$3:$AW$500
 
Для Вашего примера код будет выглядеть так:  
 
Sub test()  
   Dim ra As Range, rng As Range  
   Set ra = Range([A3], Range("A" & Rows.Count).End(xlUp))
   Set rng = ra.Offset(, 1) ' начальный диапазон [b3:b500]
   For i = 1 To 12  
       Set rng = Union(rng, ra.Offset(, 1 + i * 5))  
   Next  
   rng.Select  
End Sub
 
Этот код выделил только по три строки по столбец BJ включительно.
 
> Этот код выделил только по три строки  
Это потому, что столбец А - пустой.  
 
 
Если самостоятельно не можете модифицировать пример, то пользуйтесь этим кодом:  
 
Sub test()  
   Dim rng As Range  
   Set rng = [b3:b500] ' начальный диапазон
   For i = 1 To 12  
       Set rng = Union(rng, [b3:b500].Offset(, i * 5))
   Next  
   rng.Select  
End Sub
Страницы: 1
Читают тему
Наверх
Loading...