Как выделить строку vba for excel

How can I tell Excel to highlight rows by their row number. For instance, let’s say I wanted row 6, 10, 150, 201 highlighted. Thanks.

Siddharth Rout's user avatar

asked Jun 6, 2012 at 22:12

Dan's user avatar

Here is another one based on Mote’s .EntireRow.Interior.ColorIndex

This one doesn’t restrict you to enter the row numbers but gives the user the flexibility to choose the rows at runtime.

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

FOLLOWUP

Is there a way to write the macro to read the row numbers from a list and highlight the rows?

Yes there is a way. Let’s say the list in Cell A1 to A10 then you can use this code

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

Reafidy's user avatar

Reafidy

8,2505 gold badges49 silver badges81 bronze badges

answered Jun 6, 2012 at 23:25

Siddharth Rout's user avatar

Siddharth RoutSiddharth Rout

146k17 gold badges206 silver badges250 bronze badges

2

As an alternative to Motes’ answer, you can use conditional formatting.

Eg: select A1:J500, Conditional formatting >> New rule >> Use a formula…

For the formula enter: =OR(ROW()=6, ROW()=10, ROW()=150, ROW()=201)

answered Jun 6, 2012 at 22:38

Tim Williams's user avatar

Tim WilliamsTim Williams

150k8 gold badges96 silver badges124 bronze badges

0

For basic VBA code, you can always start recording a macro, perform the action, stop recording, look at what code was generated, and then clean that up to do what you want. For example, recording the action of highlighting a row (setting the value of Interior.Color) gives you:

Rows("13:13").Select
Range("C13").Activate
With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 65535
    .TintAndShade = 0
    .PatternTintAndShade = 0
End With

The selection commands and extraneous Interior properties can be removed giving you:

Rows("13:13").Interior.Color = 65535

Adding in the row multi-select:

Rows("6:6,10:10,150:150,201:201").Interior.Color = 65535

Summary:

  • Record macro
  • View Excel’s version
  • Use/Edit what code you need

answered Jun 6, 2012 at 22:36

Steve Konves's user avatar

Steve KonvesSteve Konves

2,6283 gold badges24 silver badges44 bronze badges

1

objWB.Cells(rowNum,201).EntireRow.Interior.ColorIndex = 6

etc

answered Jun 6, 2012 at 22:16

Motomotes's user avatar

MotomotesMotomotes

3,8941 gold badge25 silver badges24 bronze badges

1

Update: Didn’t realize the date on this, but thought I’d add this in since it was relevant to the chosen answer.

In addition to Siddharth Rout’s answer, since I don’t have enough rep to comment yet, you can dynamically figure out how many rows there are in your worksheet with these two lines. xlCellTypeConstants could be changed to another XlCellType constant that you need, and the range can always be changed to accommodate to your spreadsheet.

Dim numRows As Integer
numRows = Range("A2", Range("A1048576").End(xlUp)).SpecialCells(xlCellTypeConstants).Cells.Count

answered Mar 17, 2015 at 19:56

Kelsius's user avatar

KelsiusKelsius

4132 gold badges5 silver badges19 bronze badges

Sorry if it is not as concise or elegant as other answers, but it gets the job done. When I was writing code for my own application I needed to loop through my code. Also, instead of highlighting the entire row, I only needed to highlight a portion of the rows.

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

answered Jun 28, 2016 at 19:45

Ray's user avatar

Автор moland, 04 октября 2017, 13:50

Подскажите как выделить  диапазон строк от a до b
Public a, b As Integer
Sub asd()

  a = Range(«диапазон»).Rows(Range(«диапазон»).Rows.Count).Row
  b= UsedRange.Rows.Count
    Rows(«a:b»).Select
End sub

Почему когда стоят переменные в скобках не выделяет строки, а скажем  Rows(a).Select работает.
a и b находит верно я проверял через msgbox.



Администратор

  • Administrator
  • Сообщения: 2,254
  • Записан

Не ответ на ваш вопрос, просто замечание по коду.

В VBA нужно указывать тип данных для каждой переменной. Правильно так:
Public a As Integer, b As Integer

В вашем же случае у переменной «a» тип данных «Variant», а не «Integer», как вы предполагали.



Администратор

  • Administrator
  • Сообщения: 2,254
  • Записан

Не ответ на ваш вопрос, просто замечание по коду.

В экселе 2007+ 1 млн строк на листе. Поэтому даже для цикла по строкам недостаточно типа данных Integer.
Поэтому правильно использовать тип данных Long:
Public a As Long, b As Long



Администратор

  • Administrator
  • Сообщения: 2,254
  • Записан

В VBA, всё, что попадает внутрь кавычек становится обычным текстом. В этом коде внутри скобок уже не переменные, как вы думаете, а просто буквы «a» и «b»:
rows(«a:b»).Select



Администратор

  • Administrator
  • Сообщения: 2,254
  • Записан

Можно так выделить строки:

Public a As Long, b As Long

Sub asd()
    a = Range(«диапазон»).rows(Range(«диапазон»).rows.Count).row
    b = UsedRange.rows.Count
    rows(a).Resize(b).Select
End Sub


Ок, спасибо.
В моем случае будет.
rows(a+1).Resize(b-а).Select


  • Форум по VBA, Excel и Word

  • VBA, Excel

  • VBA, макросы в Excel

  • Excel VBA Макросы: Выделение строк через переменные

0 / 0 / 0

Регистрация: 23.06.2008

Сообщений: 36

1

25.06.2008, 02:16. Показов 26332. Ответов 2


Студворк — интернет-сервис помощи студентам

как выделить всю текущую строку? Excel. если извесно, что в строке 5 ячеек? спасибо



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

25.06.2008, 02:16

2

Victory

25.06.2008, 12:30

2

Если хочешь выделить всю строку пиши Rows(Activecell.row).select.

TurboDuck

50 / 49 / 13

Регистрация: 23.11.2015

Сообщений: 401

20.07.2016, 07:30

3

Visual Basic
1
2
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select



0



На чтение 16 мин. Просмотров 533 Опубликовано 04.02.2021

Как указать Excel выделять строки по их номеру. Например, скажем, я хотел выделить строки 6, 10, 150, 201. Спасибо.


Вот еще один, основанный на .EntireRow.Interior.ColorIndex

Mote. ‘не ограничивает вас вводом номеров строк, но дает пользователю гибкость в выборе строк во время выполнения.

  Option ExplicitSub Sample () Dim Ret As Range On Error Resume Next Set  Ret = Application.InputBox («Пожалуйста, выберите строки, которые вы хотите раскрасить», «Цветные строки», Тип: = 8) При ошибке GoTo 0 Если нет Ret Is Nothing, то Ret.EntireRow.Interior.ColorIndex = 6End Sub  

FOLLOWUP

Есть ли способ написать макрос для чтения номеров строк из список и выделить строки?

Да, есть способ. Скажем, список в ячейках от A1 до A10, тогда вы можете использовать этот код

  Option ExplicitSub Sample () Dim i As Long, sh As Worksheet On Error GoTo Whoa Application.ScreenUpdating =  False '~~> Установите это на лист, на котором нужно раскрасить строки. Set sh = Sheets ("Sheet2")' ~~> Измените Sheet1 на лист, который имеет список With Sheets ("Sheet1") For i = 1  До 10 Если не Len (Trim (.Range ("A" & i) .Value)) = 0 And _ IsNumeric (.Range ("A" & i) .Value) Then _ sh.Rows (.Range ("A  "& i) .Value) .Interior.ColorIndex = 3 ' 

В качестве альтернативы ответу Motes вы можете использовать условное форматирование.

Например: выберите A1: J500, Условное форматирование >> Новое правило >> Использовать формулу …

Для формулы введите: = OR (ROW () = 6, ROW () = 10, ROW () = 150, ROW () = 201)

ответил 06 июня ’12 в 22:38


В качестве альтернативы ответу Моутса вы можете использовать условное форматирование.

Например: выберите A1: J500, Условное форматирование >> Новое правило >> Использовать формулу …

Для формулы введите: = OR (ROW () = 6, ROW () = 10, ROW () = 150, ROW () = 201)


Для базового кода VBA вы всегда можете начать запись макроса, выполнить действие, остановить запись, посмотреть, какой код был сгенерирован, а затем очистить его, чтобы сделать то, что вы хотите. Например, запись действия выделения строки (установка значения Interior.Color) дает вам:

  Rows ("13:13"). SelectRange ("C13"  ) .ActivateWith Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0End With  

Команды выбора и посторонние внутренние свойства могут быть удалены дает вам:

  Rows ("13:13"). Interior.Color = 65535  

Добавление в строку нескольких выберите:

  Rows ("6: 6,10: 10,150: 150,201: 201"). Interior.Color = 65535  

Сводка:

  • Запись макроса
  • Просмотр версии Excel
  • Используйте/редактируйте нужный код

ответил 6 июня ’12 в 22:36

  • +1 за подробный ответ 🙂 – Siddharth Rout 6 июня 2012, 23:18

добавить комментарий |


Для базового кода VBA вы всегда можете начать запись макроса, выполнить действие, остановить запись, посмотреть, какой код был сгенерирован, и затем очистите это, чтобы делать то, что вы хотите. Например, запись действия выделения строки (установка значения Interior.Color) дает вам:

  Rows ("13:13"). SelectRange ("C13"  ) .ActivateWith Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0End 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  

и т. Д.

отредактировано 24 февраля ’17 в 06:54

ответил 06 июня ’12 в 22:16


  objWB.Cells (rowNum, 201) .EntireRow.Interior. ColorIndex = 6  

и т. Д.


Обновление: не понял дату на этом, но подумал, что добавлю это, поскольку это имеет отношение к выбранному ответу.

В дополнение к Ответ Сиддхарта Роута, поскольку у меня пока недостаточно комментариев для комментариев, вы можете динамически определить, сколько строк на вашем листе с этими двумя строками. xlCellTypeConstants можно изменить на другую константу XlCellType, которая вам нужна, а диапазон всегда можно изменить в соответствии с таблицей.

  Dim numRows  Как IntegernumRows = Range ("A2", Range ("A1048576"). End (xlUp)). SpecialCells (xlCellTypeConstants) .Cells.Count  

ответил 17 марта 2015, в 19:56


Обновление: не понял дату на этом, но подумал, что добавлю это, так как это имеет отношение к выбранному ответу.

В дополнение к ответу Сиддхарта Роута, поскольку у меня еще недостаточно репутации для комментариев, вы можете динамически вычислить, сколько строк на вашем листе с этими двумя строками. xlCellTypeConstants можно изменить на другую константу XlCellType, которая вам нужна, а диапазон всегда можно изменить в соответствии с таблицей.

  Dim numRows  Как IntegernumRows = Range ("A2", Range ("A1048576"). End (xlUp)). SpecialCells (xlCellTypeConstants) .Cells.Count  

Извините, если он не такой краткий или элегантный, как другие ответы, но он выполняет свою работу. Когда я писал код для своего собственного приложения, мне нужно было перебрать мой код в цикле. Кроме того, вместо выделения всей строки мне нужно было выделить только часть строк.

  Sub Highlight () Dim ThisWB As WorkbookDim ThisWS As WorksheetDim rows (0 to 3  ) As IntegerDim test As StringSet ThisWB = ActiveWorkbookSet ThisWS = ThisWB.Sheets ("Sheet1") rows (0) = 6rows (1) = 10rows (2) = 150rows (3) = 201For i = 0 To 3 test = "A"  & rows (i) & ": H" & rows (i) ThisWS.Range (test) .Interior. ColorIndex = 15Next iEnd Sub  

ответил 28 июня ‘ 16, 19:45


Извините, если он не такой краткий или элегантный, как другие ответы, но он выполняет свою работу. Когда я писал код для своего собственного приложения, мне нужно было перебрать мой код в цикле. Кроме того, вместо выделения всей строки мне нужно было выделить только часть строк.

  Sub Highlight () Dim ThisWB As WorkbookDim ThisWS As WorksheetDim rows (0 to 3  ) As IntegerDim test As StringSet ThisWB = ActiveWorkbookSet ThisWS = ThisWB.Sheets ("Sheet1") rows (0) = 6rows (1) = 10rows (2) = 150rows (3) = 201For i = 0 To 3 test = "A"  & rows (i) & ": H" & rows (i) ThisWS.Range (test) .Interior.ColorIndex = 15Next iEnd Sub  

Вы можете добиться того же, используя условное форматирование

  • помещаю список значений в столбец (я использую отдельную вкладку и даю списку имя)
  • в условном форматировании – Новое правило – «использовать формулу для определения с ячейками для форматирования»
  • прочтите эту статью http://www.howtogeek.com/howto/45670/how-to-highlight-a-row-in-excel-using-conditional-formatting/
  • правило использует vlookup в формуле- = $ A2 = VLOOKUP ($ A2, list, 1, FALSE)

ответил 5 августа 2016 в 14:43


Вы могли бы добиться того же, используя условное форматирование

  • put list значений в столбце (я использую отдельную вкладку и даю списку имя)
  • при условном форматировании – Новое правило – «использовать формулу для определения с ячейками для форматирования»
  • прочтите эту статью http://www.howtogeek.com/howto/45670/how-to-highlight-a-row-in-excel-using-conditional-formatting/
  • правило использует vlookup в формуле- = $ A2 = VLOOKUP ($ A2, list, 1, FALSE)


Макрос VBA – выделение Строка для дополнений ИЛИ ячейка для изменений

Привет всем!

Хорошо, у меня есть шаблон для другого отдел, который я развиваю. Мне нужно добавить условное форматирование через VBA. Мне удалось найти код на форумах и модифицировать его. Он как есть соответствует одному из двух моих требований, но есть одно изменение, которое я хотел бы (диапазон). Мне просто нужен второй код или модификация этого кода. Я все еще новичок в кодировании Worksheet_Change. Код, который я нашел, работает для «часть 2 ниже»

Часть 1 – Любая НОВАЯ запись потребует выделения всей строки (я рекомендую оранжевым или желтым … без предпочтений).
– Диапазон данных – столбцы A – DD
– Количество строк будет меняться от недели к неделе, поскольку это глобальная книга (поэтому я бы предпочел не указывать конкретный диапазон)
– Ключевая ячейка, которая будет указывать на запись, в столбце C находится идентификатор сотрудника.
– Например, сейчас у меня 1377 строк данных
– Если я добавлю что-то в ячейку A1378 или B1378, моя “Часть 2 “VBA включится и выделит ячейку (цвет # 38) розовым или чем-то еще. Если данные были введены в ячейку C1378, то вся строка (A1378: DD1378) будет выделена желтым (или оранжевым).
– Я хочу, чтобы сценарий «добавления» запускался изначально
– Многие из этих ячеек являются формулами в других столбцах, вероятно, что другая ячейка в диапазоне AA: DD, хотя строка была добавлена, может потребовать от пользователя перезаписать ее.
– В этом случае строка будет желтый (или оранжевый), чтобы указать, что это была добавленная строка, но тогда он также может содержать несколько ячеек lpink для обозначения перезаписанных ячеек

Часть 2 – отдельные ячейки меняются на розовый (цвет # 38) при изменении.
– Во второй строке кода, мне бы хотелось это, если диапазон не ограничен
– Этот процесс существенно растет
– Расчет заработной платы за две недели имеет в отличии 25000 строк
– Диапазон может зависеть от того, имеет значение в столбце C
– Столбец C – это идентификатор сотрудника, который является движущей силой всех транзакций

  1. Private Sub Worksheet_Change (ByVal Целевой как диапазон)
  2. Const WS_RANGE As String = “A2: DD2500”
  3. При ошибке GoTo ws_exit:
  4. Application.EnableEvents = False
  5. Если не пересекается (Target, Me.Range (WS_RANGE)), то ничего не значит
  6. С целью
  7. .Interior.ColorIndex = 38
  8. Завершить на
  9. End If
  10. ws_exit:
  11. Application.EnableEvents = True
  12. End Sub

Показать больше


Привет ,

Может вы публикуете образец файла от 10 до 15 строк … (с анонимными данными …)

Мне кажется, что весь процесс необходимо пересматривать в свете ваших 650 000 записей в год …


Карим —-

Я создал частичный файл … не со всеми столбцами. Я думаю, что попал в колонку AD. Имена, адреса, имя сотрудников, ставки заработной платы … это все фиктивные данные, но они представляют собой тип даты, которая будет заполнена. Большинство типов данных, которые будут отображаться на этом листе, представляют собой числовые значения и суммы в долларах, а около 75% рабочего листа – формулы.. Теперь этот рабочий лист называется Sheet3 (хотя и не в этом примере), а кодовое имя также Sheet3. Я хотел бы иметь возможность использовать кодовое имя, а не имя листа, так как я не могу контролировать, решит ли пользователь переименовать лист.


Привет, Шерри,

Прикреплен ваш тестовый файл …

Быстро добавил щелчок правой кнопкой мыши, чтобы очистить все внутренние цвета …


Carim,

Работает отлично. Я скорректировал скрипт для

  1. Target .Row, 30

, которые у вас есть для моего файла примера до 108 столбцов для моего фактического файла. Он по-прежнему работал отлично. Но потом я понял, что когда люди добавляются, у меня есть сценарий, который копирует формулы во все строки с данными. И это работает отлично … за исключением того, что теперь у меня есть ваш замечательный скрипт выделения, форматирование было перезаписано, потому что мой скрипт “формулы” использует для этого это “Автозаполнение”. Есть ли лучший способ, чтобы этот сценарий мог копировать формулы (первая строка данных всегда – это строка 2, заголовки в строке 1) и копировать полностью вниз? Мне нравится ваш сценарий, и это именно то, что мне нужно. Как и этот скрипт для формул … Мне просто нужен способ, чтобы мой скрипт UpdateFormulas НЕ перезаписывал форматы, созданные вашим выделением. Как я, возможно, уже упоминал, этот шаблон предназначен для другого отдела, поэтому такие вещи должны быть на месте. Ниже мой код для обновления всех формул при добавлении данных. Пожалуйста, простите за грубое кодирование, поскольку я еще новичок.

  1. Sub UpdateFormulas ()
  2. ‘Оптимизация скорости макросов
  3. Application.ScreenUpdating = False
  4. Application.EnableEvents = False
  5. Application.Calculation = xlCalculationManual
  6. ‘Имя листа и расположение столбца, которые нужно удалить
  7. Sheet3.Select
  8. ‘Диапазон ячеек, в которых находятся формулы
  9. ‘ Должен существовать столбец для обозначения формулы.
  10. Диапазон (“I2”) .AutoFill Destination: = Range (“I2: I” & Cells (Rows.Count, “B”). End (xlUp) .Row)
  11. Range (“AC2”). Назначение автозаполнения: = Range (“AC2: AC” & Cells (Rows.Count, “B”). End (xlUp) .Row)
  12. Range (“AJ2″). Назначение автозаполнения: = Range (” AJ2: AJ “& Cells (Rows.Count,” B “). End (xlUp) .Row)
  13. Range (” AL2 “). Назначение автозаполнения: = Range (” AL2: AL ” & Ячейки (Rows.Count, “B”). End (xlUp) .Row)
  14. Range (“AT2”). Автозаполнение места назначения ция: = Range (“AT2: AT” & Cells (Rows.Count, “B”). End (xlUp) .Row)
  15. Range (“BH2: CH2”). Назначение автозаполнения: = Диапазон (“BH2: CH” & Cells (Rows.Count, “B”). End (xlUp) .Row)
  16. Range (“CJ2: DD2”). Назначение автозаполнения: = Диапазон («CJ2: DD» и ячейки (Rows.Count, «B»). Конец (xlUp). Строка)
  17. ‘Имя листа и расположение столбца для удаления
  18. Sheet4.Select
  19. ‘Диапазон ячеек, в которых находятся формулы
  20. ‘ Должен существовать столбец для обозначения формулы.
  21. Диапазон (“I2”). Назначение автозаполнения : = Range (“I2: I” & Cells (Rows.Count, “B”). End (xlUp) .Row)
  22. Range (“AC2”). Назначение автозаполнения: = Range ( «AC2: AC» и ячейки (Rows.Count, «B»). End (xlUp) .Row)
  23. Range («AJ2»). Назначение автозаполнения: = Range («AJ2: AJ “& Cells (Rows.Count,” B “). End (xlUp) .Row)
  24. Range (” AL2 “). Назначение автозаполнения: = Range (” AL2: AL “& Cells ( Rows.Count, “B”). End (xlUp) .Row)
  25. Range (“AT2”). Назначение автозаполнения: = Range (“AT2: AT” & Cells (Rows.Count, “B”). End (xlUp) .Row)
  26. Range (“BH2: CH2”). Назначение автозаполнения: = Range (“BH2: CH” & Cells (Rows.Count, “B “) .End (xlUp) .Row)
  27. Range (” CJ2: DE2 “). Назначение автозаполнения: = Range (” CJ2: DE “& Cells (Rows.Count,” B “) .End (xlUp) .Row)
  28. ‘активирует лист с определенным именем
  29. ‘Activ Включает вкладку «Основные» (Sheet2)
  30. Sheet2.Activate
  31. ResetSettings:
  32. ‘Сбросить настройки макрооптимизации
  33. Application.EnableEvents = True
  34. Application.Calculation = xlCalculationAutomatic
  35. Application.ScreenUpdating = True
  36. End Sub

Показать больше

ПРИМЕЧАНИЕ. Я просто проводил дополнительное тестирование кода выделения “добавить” и заметил кое-что, что я не знаю, сможете ли вы добавить. Если мы добавим Джона Смита, все его данные и формулы, строка будет оранжевой … но если одна ячейка должна быть перезаписана, она все равно должна измениться на розовый (эта одна ячейка), несмотря на то, что строка будет оранжевой. Перезапись отдельных ячеек в основном происходит, когда в ячейке есть формула, которая заменяется значением или другой формулой. Мы должны видеть их визуально, отсюда и розовый цвет. Я должен был это указать. Очевидно, вы не можете знать, о чем я думаю, извините за это.


Рад слышать, что вы движетесь в правильном направлении …

Что касается макроса UpdateFormulas … есть несколько возможностей …

Вы могли бы преобразовать свою базу данных в таблицу

Однако почему вы копируете из строки 2 полностью вниз?

Все существующие строки уже обновлены …

Запуск с последней использованной строки повысит производительность вашего листа …

Относительно вашего способа добавления новых записей: как это сделано …?


Мне нужно сохранить вещи в основном в том же формате, поскольку этот шаблон будет использоваться несколькими другими пользователями. В моей компании есть строгие протоколы.. даже глупые вещи. Чтобы преобразовать базу данных в таблицу, мне нужно получить разрешение от «сильных мира сего». Я мелкий подрядчик, поэтому мне сейчас нужно «раскрашивать между строк».

– Почему я копирую из строки 2 вниз для формул? Честно говоря, потому что я не знаю, как закодировать его для копирования из последней строки, содержащей формулы, вниз. Это был бы лучший способ. Но поскольку я еще новичок, а объем данных постоянно меняется, я просто понятия не имел. Я бы предпочел вставить формулы из последней строки существующей строки формул. Я согласен, начиная с последнего ряда формул была бы лучшая производительность, это сводится к недостатку знаний с моей стороны.
– Добавляя новые записи, я, честно говоря, не знаю, это не процесс, я полностью знаком с. Я – ОЧЕНЬ подробный процесс расчета заработной платы для государственных контрактов. Существует множество переменных, и иногда расчет формулы требует перезаписи в виде значения или исправленной формулы. Я просмотрел предыдущие книги, и там есть множество выделенных ячеек и строк, которые были раскрашены вручную для этой цели. Это происходит постоянно (и пользователи всегда выбирают ВСЮ строку, а не только 103 фактических столбца в пределах диапазона).

Моя роль – оптимизировать и автоматизировать процесс. Конечный пользователь тратит так много времени на форматирование, вставку столбцов, копирование и вставку формул из предыдущей книги, и этот список можно продолжить! Выделение измененных ячеек и строк


Честно говоря … мне вас очень жаль … !!!

Очень грустно (и почти невероятно …) слышать, что вы не имеете права использовать Excel таким образом, чтобы каждый мог работать более продуктивно …

Хочу пожелать вам удачи в попытках оптимизировать ваш процесс … в рамках наложенных на вас глупых ограничений …: smash:


Спасибо, Карим, за вашу помощь. Это очень ценится. И я согласен … Я тоже не мог в это поверить, когда я попытался внести некоторые простые изменения (по крайней мере, я так думал), и был отключен.


Не стесняйтесь приходить назад на форум … для новых вопросов … надеюсь, с меньшими ограничениями …: wink:


Карим,
Большое спасибо! Некоторые вещи требуют одобрения нашей штаб-квартиры в другой стране … и, честно говоря, это просто глупо! Но мне нужна зарплата. И да, я вернусь. Еще раз спасибо за вашу помощь!

~~ Шерри


Карим,

Надеюсь, вы можете помочь. Был изменен запрос на этот макрос выделения. Код ниже – это то, что вы мне предоставили в последний раз. Мне нужно, чтобы эти макросы выполнялись ТОЛЬКО, когда пользователь делает что-то ВРУЧНУЮ с книгой. Если пользователь запускает макрос для импорта или копирования данных на листы в книге, ничего не должно выделяться. Однако, если пользователь вручную добавляет новую строку в книгу, эта строка (столбцы A-DD) будет выделена оранжевым цветом (индекс цвета 46). Я провел UAT с пользователем сегодня, и мне посоветовали, что пользователь выберет похожую строку и скопирует/вставит эту строку в 1-ю пустую строку, чтобы пользователь вручную изменил любые особенности. В этом случае вся строка (A-DD) должна быть оранжевой, а затем, когда каждая ячейка будет изменена пользователем, только эти ячейки будут розовыми.
Пользователь копирует запись сотрудника, вставляет в новую строка. Затем меняет имя сотрудника, emp #, дату начала, должность и т. Д. Только те измененные ячейки розового цвета, остальные остаются оранжевыми. Возможно ли это?

  1. Option Explicit
  2. Private Sub Worksheet_Change (ByVal Target As Range)
  3. Если Target.Row = 1, то выйдите из Sub
  4. Dim i As Double
  5. i = ActiveSheet.Cells (Application.Rows.Count , “A”). End (xlUp) .Row
  6. Application.Calculation = xlCalculationManual
  7. Application.EnableEvents = False
  8. Если Target.Row> i Then
  9. Range (Cells (Target.Row, 1), Cells (Target.Row, 108)). Interior.ColorIndex = 46
  10. ElseIf Target.Row
  11. Target.Interior.ColorIndex = 38 ‘
  12. End If
  13. Application.EnableEvents = True
  14. Application.Calculation = xlCalculationAutomatic
  15. End Sub
  16. Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean)
  17. ‘Щелкните правой кнопкой мыши, чтобы очистить цвета
  18. Если Target.Row = 1 Затем выйдите из Sub
  19. Dim i As Double
  20. i = ActiveSheet.Cells (Application.Rows.Count, “A”). End (xlUp) .Row
  21. Application.Calculation = xlCalculationManual
  22. Application.EnableEvents = False
  23. If Target.Row> i Then
  24. Range (Cells (Target.Row, 1), Cells (Target.Row, 108)). Interior.ColorIndex = xlNone
  25. ElseIf Target.Row
  26. Target.Interior.ColorIndex = xlNone
  27. End If
  28. Application.EnableEvents = True
  29. Application.Calculation = xlCalculationAutomatic
  30. Cancel = False
  31. End Sub

Показать больше


Шерри,

Как вы очень хорошо знаете, есть два типа макросов:

1. Стандартные макросы

2. Макросы событий

Стандарт требует, чтобы пользователь запускал запрос через меню, ярлык или кнопку

Макрос события запускается действием, выполняемым пользователем

Итак, самое первое решение, которое вы должны принять, – какой маршрут вы хотите выбрать …

Затем второе решение связано с тем, что именно вам нужно отслеживать … и, следовательно, выделять …

Надеюсь, это поможет

! Знаю ячейку, а как выделить всю строку?

GAL
Обычный пользователь
Обычный пользователь
Аватара пользователя

 
Сообщения: 69
Зарегистрирован: 05.11.2004 (Пт) 15:57

! Знаю ячейку, а как выделить всю строку?

Привет!

Люди, подскажите, пожалуйста.. :wink:

Как выделить строку если я знаю ячейку в этой строке?

Заранее большое спасибо.


uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя

 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 06.04.2005 (Ср) 10:38

Rows(номер_строки).Select

Если в строке есть ячейки, объединенные с другими строками, выделится несколько строк.


GAL
Обычный пользователь
Обычный пользователь
Аватара пользователя

 
Сообщения: 69
Зарегистрирован: 05.11.2004 (Пт) 15:57

Сообщение GAL » 06.04.2005 (Ср) 10:49

Я не знаю номер строки.

Я немогу явно указать номер этой строки.

У меня в макросе запускается поиск, нахожу ячейку с таким-то содержимым и мне нужно выделить строку содержащую эту ячейку.

Есть такая возможность? :?:


GAL
Обычный пользователь
Обычный пользователь
Аватара пользователя

 
Сообщения: 69
Зарегистрирован: 05.11.2004 (Пт) 15:57

Сообщение GAL » 06.04.2005 (Ср) 10:52

Я незнаю номер строки.

Я немогу указать его явно.

У меня макрос ищет ячейку с таким-то содержимым и когда найдет мне нужно выделить строку содержащую эту ячейку.

Есть такая возможность? :?:


uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя

 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 06.04.2005 (Ср) 10:53

Да, если x — это твоя найденная ячейка, то она содержится в столбце x.Column и в строке x.Row. Соответственно, можешь выделить строку так:

Rows(x.Row).Select


GAL
Обычный пользователь
Обычный пользователь
Аватара пользователя

 
Сообщения: 69
Зарегистрирован: 05.11.2004 (Пт) 15:57

Сообщение GAL » 06.04.2005 (Ср) 11:03

Да, так получилось.:)

Спасибо uhm!


GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.04.2005 (Ср) 12:51

x.entirerow.select

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас



Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 2

Понравилась статья? Поделить с друзьями:
  • Как выделить столбец в excel при сортировке
  • Как выделить строки с одинаковым содержимым в excel
  • Как выделить столбец в excel не с первой строки
  • Как выделить строки по условию vba excel
  • Как выделить столбец в excel на телефоне