Форум по VBA, Excel и Word

VBA, Excel => VBA, макросы в Excel => Тема начата: Посетитель 22.02.2023 от 21 февраля 2023, 19:41

Название: Проблема с амперсандом в формуле
Отправлено: Посетитель 22.02.2023 от 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
Название: От: Проблема с амперсандом в формуле
Отправлено: Администратор от 22 февраля 2023, 09:36
Написал вам два письма на почту с заголовком "Письмо с Форума по 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