Вы можете сделать это только через 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
. Это, наверное, нормально, но я не знаю, как вы используете.