Заполнение диапазона ячеек одним и тем же значением из раскрывающегося списка - PullRequest
0 голосов
/ 06 августа 2020

Все мы знаем, что Excel имеет некоторые противоречащие интуиции поведения, и я считаю, что это одно из них:

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

visualisation

Sometimes a few magic keyboard shortcuts such as CTRL+d, or combination of CTRL+' and CTRL+ENTER can fix this behaviour, but from my experience clients doesn't like to learn some new hacks, they just want to work everything in as simple way as possible.

I found even similar questions on SO e.g. here:

Добавление того же раскрывающегося списка значение для нескольких ячеек одновременно

1 Ответ

0 голосов
/ 06 августа 2020

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

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    
    ' MACRO FILLS THE WHOLE SELECTED RANGE
    ' WITH THE SAME VALUE USING DROP-DOWN LIST
    ' IN JUST ONE ACTIVE CELL
    
    ' change to false if all selected cells should be filled with value
    Const FILL_VISIBLE_CELLS_ONLY As Boolean = True
    
    ' detecting if dropdown list was used
    '
    '   I am using very clever solution by JvdV from SO
    '       ~~~~> stackoverflow.com/questions/56942551/
    '
    '   If after edit we're in the same cell - drop-down list was used
    '   I know that may be also drag&drop or copy-paste
    '   but it seems no matters here
    '
    If ActiveCell.Address <> Target.Address Then Exit Sub
    
    ' preventing error which sometimes occurs
    If IsEmpty(ActiveCell.Value) Then Exit Sub
    
    ' fill a range or visible range with activeCell value
    If FILL_VISIBLE_CELLS_ONLY Then
        Selection.Cells.SpecialCells(xlCellTypeVisible) _
                 .Value = ActiveCell.Value
    Else
        Selection.Value = ActiveCell.Value
    End If
        
End Sub

визуализация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...