Как я могу указать Excel выделять строки по их номеру строки. Например, предположим, что я хотел выделить строки 6, 10, 150, 201. Спасибо.
Использование VBA для выбора и выделения строк Excel
Ответы (7)
Вот еще один, основанный на .EntireRow.Interior.ColorIndex
Моте.
Это не ограничивает вас вводом номеров строк, но дает пользователю возможность выбирать строки во время выполнения.
Option Explicit
Sub Sample()
Dim Ret As Range
On Error Resume Next
Set Ret = Application.InputBox("Please select the rows that you would like to color", "Color Rows", Type:=8)
On Error GoTo 0
If Not Ret Is Nothing Then Ret.EntireRow.Interior.ColorIndex = 6
End Sub
ПОСЛЕДУЮЩИЕ
Есть ли способ написать макрос для чтения номеров строк из списка и выделения строк?
Да есть способ. Скажем, список в ячейке от A1 до A10, тогда вы можете использовать этот код
Option Explicit
Sub Sample()
Dim i As Long, sh As Worksheet
On Error GoTo Whoa
Application.ScreenUpdating = False
'~~> Set this to the sheet where the rows need to be colored
Set sh = Sheets("Sheet2")
'~~> Change Sheet1 to the sheet which has the list
With Sheets("Sheet1")
For i = 1 To 10
If Not Len(Trim(.Range("A" & i).Value)) = 0 And _
IsNumeric(.Range("A" & i).Value) Then _
sh.Rows(.Range("A" & i).Value).Interior.ColorIndex = 3 '<~~ Red
Next i
End With
LetsContinue:
Application.ScreenUpdating = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume LetsContinue
End Sub
В качестве альтернативы ответу Мотеса вы можете использовать условное форматирование.
Например: выберите A1:J500, Условное форматирование >> Новое правило >> Использовать формулу...
Для формулы введите: =OR(ROW()=6, ROW()=10, ROW()=150, ROW()=201)
Для базового кода VBA вы всегда можете начать запись макроса, выполнить действие, остановить запись, посмотреть, какой код был сгенерирован, а затем очистить его, чтобы сделать то, что вы хотите. Например, запись действия по выделению строки (установка значения Interior.Color) дает вам:
Rows("13:13").Select
Range("C13").Activate
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Команды выбора и посторонние свойства интерьера можно удалить, что даст вам:
Rows("13:13").Interior.Color = 65535
Добавление в строку множественного выбора:
Rows("6:6,10:10,150:150,201:201").Interior.Color = 65535
Резюме:
- Записать макрос
- Посмотреть версию Excel
- Используйте/редактируйте код, который вам нужен
objWB.Cells(rowNum,201).EntireRow.Interior.ColorIndex = 6
так далее
Обновление: не понял дату этого, но подумал, что добавлю это, так как это имеет отношение к выбранному ответу.
В дополнение к ответу Сиддхарта Раута, поскольку у меня еще недостаточно представителей для комментариев, вы можете динамически определить, сколько строк на вашем листе с помощью этих двух строк. xlCellTypeConstants
можно заменить на другую константу XlCellType, которая вам нужна, а диапазон всегда можно изменить в соответствии с вашей электронной таблицей.
Dim numRows As Integer
numRows = Range("A2", Range("A1048576").End(xlUp)).SpecialCells(xlCellTypeConstants).Cells.Count
Извините, если он не такой лаконичный или элегантный, как другие ответы, но он выполняет свою работу. Когда я писал код для своего собственного приложения, мне нужно было перебирать мой код. Кроме того, вместо выделения всей строки мне нужно было выделить только часть строк.
Sub Highlight()
Dim ThisWB As Workbook
Dim ThisWS As Worksheet
Dim rows(0 To 3) As Integer
Dim test As String
Set ThisWB = ActiveWorkbook
Set ThisWS = ThisWB.Sheets("Sheet1")
rows(0) = 6
rows(1) = 10
rows(2) = 150
rows(3) = 201
For i = 0 To 3
test = "A" & rows(i) & ":H" & rows(i)
ThisWS.Range(test).Interior.ColorIndex = 15
Next i
End Sub
Возможно, вы сможете добиться того же, используя условное форматирование.
- поместить список значений в столбец (я использую отдельную вкладку и даю списку имя)
- при условном форматировании - Новое правило - "использовать формулу для определения ячеек для форматирования"
- прочитайте эту статью http://www.howtogeek.com/howto/45670/how-to-highlight-a-row-in-excel-using-conditional-formatting/
- правило использует vlookup в формуле- =$A2=VLOOKUP($A2,list,1,FALSE)