Списки проверки в сгенерированной таблице с помощью VBA

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

Примечание. Первые два оператора With не работают и не заполняют раскрывающийся список в таблице, но третий оператор with работает.

With objTable.DataBodyRange.Columns(9).Validation
             .Delete
             .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1: = "=Services"
             .IgnoreBlank = True
             .InCellDropdown = True
             .InputTitle = ""
             .ErrorTitle = ""
             .InputMessage = ""
             .ErrorMessage = ""
             .ShowInput = True
             .ShowError = True
End With

With objTable.DataBodyRange.Columns(9).Validation
             .Delete
             .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1: = "=Status"
             .IgnoreBlank = True
             .InCellDropdown = True
             .InputTitle = ""
             .ErrorTitle = ""
             .InputMessage = ""
             .ErrorMessage = ""
             .ShowInput = True
             .ShowError = True
End With

With objTable.DataBodyRange.Columns(14).Validation
             .Delete
             .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1: = "=AOR"
             .IgnoreBlank = True
             .InCellDropdown = True
             .InputTitle = ""
             .ErrorTitle = ""
             .InputMessage = ""
             .ErrorMessage = ""
             .ShowInput = True
             .ShowError = True
End With

Второй С перезапишет первый (тот же 9-й столбец). Он должен обработать два столбца. Что такое «=Services» и "=Status", с которыми нужно работать Operator:= xlBetween? Если именованные диапазоны, что они содержат?

FaneDuru 07.04.2024 18:02

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

Ryan Data Guy 08.04.2024 16:41
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
2
82
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  • Для xlValidateList требуется Formula1, Formula2 игнорируется. Аргумент Operator не меняет результат.

Документация Майкрософт:

Метод Validation.Add (Excel)

With objTable.DataBodyRange.Columns(9).Validation
             .Delete
             .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
               Formula1: = "=Services"
             .IgnoreBlank = True
             .InCellDropdown = True
             .InputTitle = ""
             .ErrorTitle = ""
             .InputMessage = ""
             .ErrorMessage = ""
             .ShowInput = True
             .ShowError = True
End With

Другие вопросы по теме