Страницы: 1
RSS
Выделение столбцов
 
Требуется выделить и закрасить столбец под определённой шапкой. Проблема состоит в том, что шапка может состоять из нескольких объединенных столбцов, и при выполнение следующего кода:  
Sub example()  
Dim r As Range  
For Each r In ActiveSheet.UsedRange  
If r.Value Like "Плановый год*" Then  
With Range(r, r.End(xlDown)).Interior  
.ThemeColor = xlThemeColorAccent6  
.TintAndShade = 0.799981688894314  
End With  
End If  
Next r  
End Sub  
 
Выделяется лишь один из подстолбцов под шапкой, а надо, чтобы выделились все. Как обратиться ко всем столбцам?
 
Тешусь мыслью, что это решение многих "столбцовых" проблем:  
 http://www.planetaexcel.ru/orum.php?thread_id=23853&page_forum=2&allnum_forum=56
 
Спасибо, но мне не нужен фильтр, мне нужен кусочек кода, который поможет обойти эту проблему. В Вашем коде мой уровень программирования не позволяет разобраться.
 
Попробуйте так:  
Sub example()  
Dim r As Range  
For Each r In ActiveSheet.UsedRange  
 If r.Value Like "Плановый год*" Then  
'  With Range(r, r.End(xlDown)).Interior  
 r.Columns.EntireColumn.Select  
'.ThemeColor = xlThemeColorAccent6  
'.TintAndShade = 0.799981688894314  
'  End With  
 End If  
Next r  
End Sub
 
С удивлением обнаружил, что пример так и не залил. Извиняюсь и исправляюсь.  
 
Ваш код не работает, но я понял принцип. Единственное, мне желательно получить выделение с нужной ячейки и до конца рабочей области. И желательно, чтобы первые строки он не закрашивал, чтобы лишний действия не совершать, и не загружать макрос.
 
....перекур.....
 
Так выходит с моим макросом. Надо, чтобы Закрашивалось все столбцы под плановым годом, а не только первый.
 
пробуем:  
вместо With Range(r, r.End(xlDown)).Interior  
написать With Range(r, r.End(xlDown).offset(,r.mergearea.columns.count-1)).Interior
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Sub example_1()  
Dim r As Range  
Set r = Rows(3).Find(What:="Плановый год", LookIn:=xlValues, LookAt:=xlPart)  
Range(Cells(3, r.Column), Cells(Cells(Rows.Count, 8).End(xlUp).Row, 11)).Select  
'..... или Interior  
End Sub
 
Range(Cells(3, r.Column), Cells(Cells(Rows.Count, 8).End(xlUp).Row, r.Column+3)).Select
Страницы: 1
Читают тему
Наверх