У меня есть код, который генерирует таблицу с помощью 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.
xlValidateList
требуется Formula1
, Formula2
игнорируется. Аргумент Operator
не меняет результат.Документация Майкрософт:
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
Второй С перезапишет первый (тот же 9-й столбец). Он должен обработать два столбца. Что такое «=Services» и
"=Status"
, с которыми нужно работатьOperator:= xlBetween
? Если именованные диапазоны, что они содержат?