Применение макроса VBA к одному столбцу, указав код c - PullRequest
0 голосов
/ 27 мая 2020

Я работаю со следующим кодом из https://trumpexcel.com/select-multiple-items-drop-down-list-excel/

Я хочу изменить его, чтобы Excel запускал только столбец A (1). Какие изменения мне нужно внести?

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

Ошибка проверки данных - информация о типе поля / A2 / Ограничение: значение должно соответствовать одному из перечисленных

Private Sub Worksheet_Change(ByVal Target As Range)

'Code by Sumit Bansal from https://trumpexcel.com
' To make mutliple selections in a Drop Down List in Excel

Dim Oldvalue As String
Dim Newvalue As String

On Error GoTo Exitsub
If Target.Column = 1 Then
    If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
    GoTo Exitsub
    Else: If Target.Value = "" Then GoTo Exitsub Else
        Application.EnableEvents = False
        Newvalue = Target.Value
        Application.Undo
        Oldvalue = Target.Value
        If Oldvalue = "" Then
            Target.Value = Newvalue
        Else
            Target.Value = Oldvalue & ", " & Newvalue
        End If
    End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub

1 Ответ

1 голос
/ 28 мая 2020

Вы проверяете, что цель начинается в столбце A. Но он может распространяться на несколько столбцов, например A1: C10. Чтобы сослаться только на первый столбец, вы можете использовать Target.Columns (1), но другие указывают, что код может работать некорректно, если вы выберете более одной ячейки. Итак, я предлагаю либо

A) После If Target.Column = 1 Затем , поместите строку Set Target = Target.Cells (1) Или Б) Измените , если Target.Column = 1, то на , если Target.Column = 1 и Target.Cells.Count = 1, то

Вариант A выполняет ваше действие для только первая ячейка в целевом диапазоне. Вариант B заставляет ваш код срабатывать только в том случае, если редактируется одна ячейка. Третий вариант - l oop через все ячейки в Target.

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