VBA косвенная проверка данных - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь установить проверку списка для ячейки через 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

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