Добрый день гуру excel!!! Я не так часто пишу что-то в макросах, однако сейчас встала такая вот задача и я столкнулся с проблемой. Поиски решений в интернете не дали результата. Хотя несколько близких тем я нашел.
Я опишу задачу в двух словах. У меня есть книга, в ней есть два листа. Лист - "Карточка Клиента" с программным именем Client_Card и Лист - "Данные" c программным именем staff_list. На Листе1 есть табличка, в нескольких ее ячейках я хочу вывести выпадающие списки. На листе2 храниться данные для выпадающего списка.
Я хочу использовать объект Range, который бы позволил мне меняться в случаи увеличения значений в списке Я кстати пробовал вставить списки используя диапазон... но это тоже не сработало. Видимо нужно конкретно в ячейку вставлять.
[vba]
Код
With Client_Card.Range(Client_Card.Cells(14, 3), Client_Card.Cells(27, 3)).Validation
[/vba]
Я создал в книге с примером код. Как раз тот который работать не хочет.
Я пробовал просто вставлять в
[vba]
Код
.... Formula1:=staff_list.Range(staff_list.Cells(2, 1), staff_list.Cells(9, 1)).Value 'но так оно не работает.
[/vba]
[vba]
Код
With Client_Card.Cells(14, 3).Validation .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=staff_list.Range(staff_list.Cells(2, 1), staff_list.Cells(9, 1)).Value End With
[/vba]
Пробовал через переменную... но так тоже не работает
[vba]
Код
Private Sub CommandButton1_Click() Dim bbbb As String
With Cells(14, 3).Validation .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=bbbb" End With
End Sub
[/vba]
Я подозреваю что список этот, в переменной необходимо подать через запятую... то есть видимо его надо прогнать через массив, где каждому значению подставить запятую и сформировать конечную переменную со всеми значениями через запятую. Но я пока не стал так делать, в надежде что есть более простой способ, а я просто туплю...
В обще я хочу формировать данный выпадающие список на листе "Карточка клиента", при запуске книги. Но это потом, сейчас хотелось бы его заставить код работать
Добрый день гуру excel!!! Я не так часто пишу что-то в макросах, однако сейчас встала такая вот задача и я столкнулся с проблемой. Поиски решений в интернете не дали результата. Хотя несколько близких тем я нашел.
Я опишу задачу в двух словах. У меня есть книга, в ней есть два листа. Лист - "Карточка Клиента" с программным именем Client_Card и Лист - "Данные" c программным именем staff_list. На Листе1 есть табличка, в нескольких ее ячейках я хочу вывести выпадающие списки. На листе2 храниться данные для выпадающего списка.
Я хочу использовать объект Range, который бы позволил мне меняться в случаи увеличения значений в списке Я кстати пробовал вставить списки используя диапазон... но это тоже не сработало. Видимо нужно конкретно в ячейку вставлять.
[vba]
Код
With Client_Card.Range(Client_Card.Cells(14, 3), Client_Card.Cells(27, 3)).Validation
[/vba]
Я создал в книге с примером код. Как раз тот который работать не хочет.
Я пробовал просто вставлять в
[vba]
Код
.... Formula1:=staff_list.Range(staff_list.Cells(2, 1), staff_list.Cells(9, 1)).Value 'но так оно не работает.
[/vba]
[vba]
Код
With Client_Card.Cells(14, 3).Validation .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=staff_list.Range(staff_list.Cells(2, 1), staff_list.Cells(9, 1)).Value End With
[/vba]
Пробовал через переменную... но так тоже не работает
[vba]
Код
Private Sub CommandButton1_Click() Dim bbbb As String
With Cells(14, 3).Validation .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=bbbb" End With
End Sub
[/vba]
Я подозреваю что список этот, в переменной необходимо подать через запятую... то есть видимо его надо прогнать через массив, где каждому значению подставить запятую и сформировать конечную переменную со всеми значениями через запятую. Но я пока не стал так делать, в надежде что есть более простой способ, а я просто туплю...
В обще я хочу формировать данный выпадающие список на листе "Карточка клиента", при запуске книги. Но это потом, сейчас хотелось бы его заставить код работатьlopuxi
Я кстати сейчас пробую. Все до банального просто и логично, но все равно ругается VBA. Я уже и так и так вертел и через переменную подставлял и без нее.
[vba]
Код
Private Sub CommandButton1_Click() Dim bbbb As Variant
Я кстати сейчас пробую. Все до банального просто и логично, но все равно ругается VBA. Я уже и так и так вертел и через переменную подставлял и без нее.
[vba]
Код
Private Sub CommandButton1_Click() Dim bbbb As Variant
Вот, да так работает. Я замел что вылетает ошибка когда пытаешься в ячейку где уже есть выпадающий список, занести его еще раз.
Я попробовал чистить ячейку. .Clear полностью все удаляет, с форматом. Это конечно не удобно... А .ClearContents не удаляет сам список из ячейки, а только очищает содержимое...
Вот, да так работает. Я замел что вылетает ошибка когда пытаешься в ячейку где уже есть выпадающий список, занести его еще раз.
Я попробовал чистить ячейку. .Clear полностью все удаляет, с форматом. Это конечно не удобно... А .ClearContents не удаляет сам список из ячейки, а только очищает содержимое...
Ура!! Нашел как можно удалять выпадающий список. Теперь можно будет пустить цикл занесения и удаления выпадающего списка и таким образом каждый раз их обновлять :))) Спасибо за помощь! :))
[vba]
Код
Private Sub CommandButton1_Click() Dim bbbb As Variant
With Range(Cells(14, 3), Cells(27, 3)).Validation ' заносим во все ячейки выпадающий список .Delete ' удаляем предыдущий выпадающий список в ячейке. .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=bbbb ' вставляем обновленный выпадающий список с новыми или измененными значениями. End With
End Sub
[/vba]
Ура!! Нашел как можно удалять выпадающий список. Теперь можно будет пустить цикл занесения и удаления выпадающего списка и таким образом каждый раз их обновлять :))) Спасибо за помощь! :))
[vba]
Код
Private Sub CommandButton1_Click() Dim bbbb As Variant
With Range(Cells(14, 3), Cells(27, 3)).Validation ' заносим во все ячейки выпадающий список .Delete ' удаляем предыдущий выпадающий список в ячейке. .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=bbbb ' вставляем обновленный выпадающий список с новыми или измененными значениями. End With