У меня несколько готовых именованных диапазонов. Есть несколько ячеек (например Range("A2:D2"). Как каждой из этих ячеек присвоить ниспадающий список, программно?
У меня несколько готовых именованных диапазонов. Есть несколько ячеек (например Range("A2:D2"). Как каждой из этих ячеек присвоить ниспадающий список, программно?yuka
а можно еще вопрос... Мне надо этой переменной c присвоить ячейку, потом обратиться в эту функцию: типа того: [vba]
Code
Sub AddList(r As Range, sNamedRange As String) With r.Validation .Delete .Add Type:=xlValidateList, Formula1:="=" & sNamedRange End With End Sub
[/vba]
[vba]
Code
Sub Main() Dim c As Range c=Target.Offset(0,1).Value '<----тут он выдает мне ошибку object variable or with block variable not set For Each c In Range("A2:D2") AddList c, "диап1" Next c End Sub
[/vba]
а можно еще вопрос... Мне надо этой переменной c присвоить ячейку, потом обратиться в эту функцию: типа того: [vba]
Code
Sub AddList(r As Range, sNamedRange As String) With r.Validation .Delete .Add Type:=xlValidateList, Formula1:="=" & sNamedRange End With End Sub
[/vba]
[vba]
Code
Sub Main() Dim c As Range c=Target.Offset(0,1).Value '<----тут он выдает мне ошибку object variable or with block variable not set For Each c In Range("A2:D2") AddList c, "диап1" Next c End Sub
Правильно выдает. Вы пытаетесь объектной переменной присвоить значение объекта, а не сам объект. Не вникал, но самое простое вместо: Dim c As Range сделать: Dim c
Правильно выдает. Вы пытаетесь объектной переменной присвоить значение объекта, а не сам объект. Не вникал, но самое простое вместо: Dim c As Range сделать: Dim cKuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Сообщение отредактировал KuklP - Четверг, 20.12.2012, 14:28
Sub Main() Dim c As Range c=Target.Offset(0,1).Value '<----тут он выдает мне ошибку object variable or with block variable not set For Each c In Range("A2:D2") AddList c, "диап1" Next c End Sub
[/vba] в таком виде строка с ошибкой (после исправления) не имеет никакого смысла, потому что конструкция For Each сама определяет переменную c, которая уже и используется в теле цикла.
ActiveCell - активная ячейка Target - видимо "украдено" из обработчика событий замени Target на ActiveCell
либо в начале процедуры напиши: [vba]
Code
dim target as range set target=ActiveCell
[/vba]
[vba]
Code
Sub Main() Dim c As Range c=Target.Offset(0,1).Value '<----тут он выдает мне ошибку object variable or with block variable not set For Each c In Range("A2:D2") AddList c, "диап1" Next c End Sub
[/vba] в таком виде строка с ошибкой (после исправления) не имеет никакого смысла, потому что конструкция For Each сама определяет переменную c, которая уже и используется в теле цикла.
ActiveCell - активная ячейка Target - видимо "украдено" из обработчика событий замени Target на ActiveCell