Проблема с амперсандом в формуле

Автор Посетитель, 21 февраля 2023, 19:41

Посетитель

Добрый день. Делаю связанные ниспадающие списки, 2 штуки. Макрорекордером прописал два макроса. Работают замечательно. Но при любом автоматическом копировании содержимое второй ячейки продолжает ссылаться на В23. Мне надо добавить строку и сместить эти две ячейки вниз (потом ещё и ещё), т.е. поставить вместо цифры 23 переменную. Как решать проблему с кавычками внутри формул написано много, что делать с "&"?
Как в строку Formula1:="=INDIRECT(""prjtsks[""&$B$23&""]"")" вместо 23 вписать переменную?

Sub Macro1()
    Range("B23").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=INDIRECT(""prjtsks[#Headers]"")"
        .IgnoreBlank = True
        .InCellDropdown = True
    End With
End Sub

Sub Macro2()
    Range("C23").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=INDIRECT(""prjtsks[""&$B$23&""]"")"
        .IgnoreBlank = True
        .InCellDropdown = True
    End With
End Sub

Администратор

Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.

Вы предоставили исходный код, полученный с помощью макрорекордера, или сами пытались внести изменения? Если не исходный, то предоставьте исходный код, полученный с помощью макрорекордера, без каких-либо ваших изменений. Я попробую изменить этот код.

Вместо 23 подставьте переменную.

Sub Macro2()
    Range("C23").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _
            Formula1:="=INDIRECT(""prjtsks[""&$B$" & 23 & "&""]"")"
        .IgnoreBlank = True
        .InCellDropdown = True
    End With
End Sub