Страницы: 1
RSS
Изменить цвет в диапазоне ячеек в строках где выделены ячейки - VBA
 
Здравствуйте.
столкнулся с задачкой которая мне не по силам ((
Суть задачи такова :
нужно изменить цвет ячеек в диапазоне Ax:Mx в тех строках листа где пользователь выделил ячейки (пользователь может выделить и более одной ячейки в строке, но это не имеет значение - главное именно то что ячейки выделены в нужных строках)

До этого я работал только с одной строкой где выбрана ячейка и использовал вот такой код:
Код
Dim arow As Integer
Dim nrow As String
arow = ActiveCell.Row
nrow = "A" & arow & ":M" & arow
ActiveSheet.Range(nrow).Interior.Color = RGB(198, 224, 180)
 
Как-то так
Код
Sub tt()
    Dim Rng As Range
    ActiveSheet.UsedRange.EntireRow.Interior.Color = xlNone
    For Each Rng In Selection.Areas
        Rng.EntireRow.Interior.Color = RGB(198, 224, 180)
    Next
End Sub

 
А как сделать так, что бы цвет менялся только в определенном диапазоне ячеек A:M
Изменено: Antero - 09.11.2015 15:15:31
 
Тогда так
Код
Sub tt()
    Dim Rng As Range, Rng1 As Range
    ActiveSheet.UsedRange.EntireRow.Interior.Color = xlNone
    For Each Rng In Selection.Areas
        Set Rng1 = Intersect(Rng.EntireRow, Range("A:M"))
        If Not Rng1 Is Nothing Then Rng1.Interior.Color = RGB(198, 224, 180)
    Next
End Sub

 
Большое вам спасибо MBT
Попробую разобраться в коде - тут практически все команды я вижу впервые ))
Изменено: Antero - 09.11.2015 15:49:56
 
На самом деле, вот эта проверка написана по привычке проверять диапазоны
Код
If Not Rng1 Is Nothing Then Rng1.Interior.Color = RGB(198, 224, 180)
Можно просто
Код
Rng1.Interior.Color = RGB(198, 224, 180)
 
Цитата
МВТ написал: Можно просто
Да -так более понятно ))
Я опробовал код в действии - все замечательно ! И под это дело мне пришла в голову мысль как можно еще улучшить таблицу, но для этого нужно под конец операции по смене цвета сделать так, что бы была выделена строка которая находится ближе к началу.
Например мы поменяли цвет в ячейках A20:M20, A18:M18, A17:M17, A8:M8 - нужно что бы под конец операции строка A8 была выделена  
 
Так или еще хотелки будут  ;)
Код
Sub tt()
    Dim Rng As Range, Rng1 As Range
    ActiveSheet.UsedRange.EntireRow.Interior.Color = xlNone
    Set Rng1 = Selection
    For Each Rng In Rng1.Areas
       Intersect(Rng.EntireRow, Range("A:M")).Interior.Color = RGB(198, 224, 180)
    Next
    Intersect(Rng1.Rows(1).EntireRow, Range("A:M")).Select
End Sub

 
Спасибо - дальше буду пытаться разбираться - просто это действие заменяет несколько тех что пришлось бы сделать моим методом .
Еще раз ОГРОМНОЕ спасибо
Страницы: 1
Читают тему
Наверх