Я пытаюсь установить проверку списка для ячейки через VBA.Я могу использовать Formula1: =, когда формула является просто строкой, но когда я пытаюсь использовать & для объединения в переменные, это дает мне ошибку 400.Проблема с версией Formula1 с объединенными переменными, по-видимому, связана с тем фактом, что ячейка ссылки имеет значение # N / A, но в написанной формуле такой проблемы нет.Вот моя последняя попытка:
Sub InsertRow()
r = Worksheets("Kickoff Schedule").UsedRange.Rows.Count + Worksheets("Kickoff Schedule").UsedRange.Rows(1).Row - 1
...
With Range("E" & r).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="=INDIRECT($D" & CStr(r) & ")"
End With
End Sub
Полный список вещей, которые я пробовал, и если они работали / не работали:
' Works:
Formula1:="=INDIRECT($D19)"
' Works:
MsgBox "=INDIRECT($D" & CStr(r) & ")"
' MsgBox shows =INDIRECT($D19) , as expected
' Doesn't work:
Formula1:="=INDIRECT($D" & CStr(r) & ")"
' Doesn't work:
Formula1:="=INDIRECT(""" & Range("D" & r).Address(False, False) & """)"
' Shows one option with a string of the right formula, as expected:
Formula1:="INDIRECT($D" & CStr(r) & ")"
Что я делаю не так?Заранее спасибо!
PS Я уже прочитал Использование косвенной функции при проверке данных через VBA