2

Я пробовал Googeling, но не нашел ответов ... очень расстроен.

Я пытаюсь сделать это в Excel:

  1. Выберите ячейки B1 - B5 (или просто B1)
  2. Ячейка выбора А1 (желтого цвета)
  3. Ячейки B1 - B5 (или просто B1, если выбран только B1) также становятся желтыми.

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

Это было сделано кем-то для листа нашего офиса Excel, но я не могу связаться с оригинальным человеком, который сделал. Я пытаюсь продублировать эту функцию в новом листе Excel.

Как мне это сделать? Макро? VB скрипт?

2 ответа2

0

Вы можете сделать это только через VBA. Вот некоторый код, который вы можете поместить в объект Sheet.

Private lastRange As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = Range("A1").Address Then
        If Not lastRange Is Nothing Then
            lastRange.Interior.Color = Range("A1").Interior.Color
        End If
    Else
       Set lastRange = Target
    End If
End Sub

Объект lastRange сохраняется от выбора к выделению. Это единственный способ запомнить VBA, какой диапазон мы хотим выделить. Всякий раз, когда вы изменяете выделение, оно устанавливает это выделение на lastRange если только это не A1 в этом случае оно не окрашивает предыдущее выделение в любой цвет A1 .


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

Private lastRange As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count = 1 Then
        If Not Intersect(Target, Range("A1:A5")) Is Nothing Then
            If Not lastRange Is Nothing Then
                lastRange.Interior.Color = Target.Interior.Color
                Exit Sub
            End If
        End If
    End If
    Set lastRange = Target
End Sub

Теперь есть целый ряд ячеек A1:A5 которые могут быть разных цветов. Если вы выберете одну ячейку в этом диапазоне, ваш предыдущий выбор будет иметь тот же цвет, что и текущая ячейка. Вы можете настроить диапазон A1:A5 , как вам нужно.


У меня есть одна странность, о которой я знаю: если вы выбираете диапазон, то фигура, а затем A1 , диапазон, который вы выбрали ранее, все еще сохраняется как lastRange . Это, наверное, нормально, но я не знаю, как вы используете.

0

Откройте файл Excel и на вкладке HOME перейдите к условному форматированию и нажмите «Управление правилами». Вы должны увидеть правило, относящееся к ячейкам, указанным в вашем вопросе.

Проверьте ниже ссылку на Microsoft для получения дополнительной информации:

Как использовать условное форматирование

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .