Страницы: 1
RSS
Перебор ComboBox в цикле
 
Добрый день
подскажи, что не так в коде?
должно по циклу перебирать все ComboBox, присваивая свойства и очищая их
Код
'очистка списка, только значения списка и "обнуление курсора"
For i = 1 To 15
ComboBox(i).Clear
ComboBox(i).Style = fmStyleDropDownList
ComboBox(i).ListIndex = Null
Next i
 
andj25, кобобокс на листе или форме?
 
на листе (наверное)
ComboBox строится через "Режим конструктора" - Элемент Актив Х
Изменено: andj25 - 03.09.2018 17:01:39
 
Код
Sub Перебор()
    For Each s In ActiveSheet.Shapes
        If s.Name Like "Combo*Box*" Then
            vba.msgbox s.Name, vbInformation
        End If
    Next
End Sub
 
Код
Set c_ = ActiveSheet.Shapes
    For i = 1 To c_.Count
        If c_(i).DrawingObject.ShapeRange.Type = 12 Then
            With c_(i).DrawingObject
                .ListFillRange = ""
            End With
        End If
    Next i
Изменено: _Boroda_ - 03.09.2018 18:24:35
Скажи мне, кудесник, любимец ба’гов...
 
Ещё:
Код
Sub ComboOnSheet()
Dim x
    For Each x In ActiveSheet.OLEObjects
        If TypeOf x.Object Is MSForms.ComboBox Then
            x.Object.Clear
            x.Object.Style = fmStyleDropDownList
            x.Object.ListIndex = Null
        End If
    Next
End Sub


 
т.е. перебор, скажем так, прямым способом не возможен?
все предложенные методы для меня как китайская грамота :)
пойду читать про эти способы

спасибо всем
 
Что значит "прямым"? А у меня какой - кривой? )
 
Юрий М, Опять Кота Демагога включаете :-)
Полагаю, что ТС под прямым перебором подразумевает перечисление элемента по номеру. Есть 5 комбо , вот и хочу перебрать первый, второй, ….. пятый.
По вопросам из тем форума, личку не читаю.
 
Ничего не понял... У меня перебираются ВСЕ контролы, обрабатываются ТОЛЬКО КомбоБоксы (все). Что не так? Где кривизна? :)
 
Юрий М,  Юрий, ну хочется видимо как в массива, по индексу  и не перебирая все.
Изменено: БМВ - 04.09.2018 08:05:46
По вопросам из тем форума, личку не читаю.
 
БМВ, Юрий М,

прямой способ :)
Код
ComboBox(i).Clear
т.е. прямо говорю что combobox номер такой то :)

не прямой :) (мне пока не понятный)
Код
x.Object.Clear

 
Сейчас нам автор расскажет, что он понимает под прямым перебором )
 
Цитата
andj25 написал:
ComboBox(i).Clear
А i - это от первого до последнего?
 
а разве нет?
т.е. я прямо сказал комбобокс такой номер - сделать то то
все выше описанные методы сначала назначают что-то, потом делают действия :)
мне объектоориентирование сложно :) сижу - учу
Изменено: andj25 - 04.09.2018 17:23:40
 
Цитата
БМВ написал:
Есть 5 комбо , вот и хочу перебрать первый, второй, ….. пятый.
Привет, Михаил.
Загадка, у меня на UserForm раскрывающиеся списки: comboCategory, comboLocation, comboProduct. Вопрос, какой из них первый, второй, третий?
 
а, я понял :)
combobox1 и т.д. это имя которое я назначил :) по факту оно может быть любым
в том числе
Цитата
Андрей VG написал:
comboCategory, comboLocation, comboProduct
и перебор выше абстрагируется от 1,2,3...5 и берет имена какие найдет :)
 
Цитата
andj25 написал:
все выше описанные методы сначала назначают что-то, потом делают действия
Покажите строчку, где что-то "назначается" в моём  варианте.
 
Цитата
Юрий М написал:
Покажите строчку, где что-то "назначается" в моём  варианте.
Код
x In ActiveSheet.OLEObjects
x.Object
Изменено: andj25 - 04.09.2018 08:20:14
 
в целом я все понял (в части своей не осведомленности), принцип построения кода
большое спасибо :)
Юрий М, ваш метод более мне понятен
Изменено: andj25 - 04.09.2018 08:22:08
 
И где здесь "назначение"? Что Вы понимаете под "назначением"?
Тема уходит в сторону. Предложенный вариант задачу решает?
 
Юрий М,да
все решается :)
спасибо
 
Цитата
andj25 написал:
и перебор выше абстрагируется от 1,2,3...5 и берет имена какие найдет
А зачем вам имена в случае перебора? Для ActiveX, как вам показал Юрий в #6 перебираются все объекты коллекции OLEObjects на листе, плюс, фильтруются по классу объекта.
Не предусмотрено для ActiveX как для так называемых элементов формы, готовых коллекций, в которые автоматически складываются объекты только одного типа. Например аналог ComboBox для элементов формы DropDown и их коллекция на листе DropDowns (и тот и другой относятся к скрытым, чтобы увидеть в Object Browser нужно включить опцию - показывать скрытые члены).
 
Андрей VG, теперь я это понял
до этого примера
Цитата
Андрей VG написал:
comboCategory, comboLocation, comboProduct
я был в уверенности что комбобокс имеет номера типа combobox1, combobox2 и т.д.
Страницы: 1
Наверх