Обычно опция записи в Excel великолепна, но на этот раз это не помогло.Создание списка проверки данных с косвенной формулой через VBA
я могу создать список проверки достоверности данных с помощью VBA с настоящим Кодексом:
Sub Macro 8()
With Range("C8").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Land"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Теперь это работает. Но в ячейке ниже мне нужна формула =INDIRECT($C$8)
. Таким образом, использование диктофона я получил почти такой же код:
Sub Macro1()
With Range("C9").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=indirect($C$8)"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Но с помощью этого кода я всегда получите «приложения или объекта определяется ошибка» указывает на линию
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=indirect($C$8)"
Может кто-нибудь скажи мне, где моя ошибка?
Привет, Майк, Спасибо за ответ! Мне нужна ячейка INDIRECT, чтобы она тоже была сбрасывается ... Если я делаю это вручную, это работает, поскольку значения, которые я получаю из C8, - это имена списков на моем листе, поэтому я получаю выбор из этого списка в C9 С просто вставкой = НЕПРАВИЛЬНО ($ C $ 8) это не сработает ... Любая идея? –
Вы должны использовать = Косвенный («$ C $ 8»). Помимо этого, я бы рассмотрел этот вопрос. Для любых дальнейших вопросов лучше всего начинать новый вопрос. – MikeC