На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Организуем VBA-FAQ! Если у Вас есть предложения, выскажитесь здесь: Пишем FAQ, интересно Ваше мнение
Популярные разделы FAQ:    user posted image Общие вопросы    user posted image Особенности VBA-кода    user posted image Оптимизация VBA-кода    user posted image Полезные ссылки

1. Старайтесь при создании темы указывать в заголовке или теле сообщения название офисного приложения и (желательно при работе с Office 95/97/2000) его версию. Это значительно сократит количество промежуточных вопросов.
2. Формулируйте вопросы как можно конкретнее, вспоминая (хотя бы иногда) о правилах ВЕЛИКОГО И МОГУЧЕГО РУССКОГО ЯЗЫКА, и не забывая, что краткость - сестра таланта.
3. Не забывайте использовать теги [сode=vba] ...текст программы... [/code] для выделения текста программы подсветкой!
4. Темы с просьбой выполнить какую-либо работу полностью за автора здесь не обсуждаются и переносятся в раздел ПОМОЩЬ СТУДЕНТАМ.
Модераторы: Old Bat, MIF
  
> Как перебрать все CheckBox'ы на листе?? , ???
    Суть проблемы такова:

    На листе имеется порядка 70 записей, напротив каждой стоит CheckBox1, CheckBox2,.... и т.д.

    Требуется создать Кнопку "Отметить все" то есть Все CheckBox.Value = True

    CheckBox1.Value = True
    CheckBox2.Value = True
    .....
    CheckBox69.Value = True
    CheckBox70.Value = True

    Так все дело работает.

    А можно ли сделать это грубо говоря так ???

    for i=1 to 70
    CheckBox(i).Value = true
    Next
      ExpandedWrap disabled
        for i=1 to 70
          Controls("CheckBox" & CStr(i)).Value = true
        Next
        Цитата Akina @
        ExpandedWrap disabled
          for i=1 to 70
            Controls("CheckBox" & CStr(i)).Value = true
          Next

        ругается на Controls "Sub or Function not defined"
        Может объявить что то надо???
          Ну напиши Me.Controls
            Цитата Akina @
            Ну напиши Me.Controls

            Все равно ругается "Method or data member not found"
              Зазипуй файл и приложи к сообщению
                Цитата Akina @
                Зазипуй файл и приложи к сообщению

                Вот!
                Прикреплённый файлПрикреплённый файлОбщая.zip (82.97 Кбайт, скачиваний: 315)
                  ExpandedWrap disabled
                    Dim CheckBoxName As String
                    Dim CheckBoxObject As Variant
                     
                    For i = 1 To 70
                        CheckBoxName = "CheckBox" & CStr(i)
                        Set CheckBoxObject = Me.Evaluate(CheckBoxName)
                        CheckBoxObject.Object.Value = True
                    Next
                    Респект и уважуха ))))
                    Я два дня голову ломаю
                    Синтаксис ё-маё
                    :victory:

                    Все получилось ))
                    Сообщение отредактировано: calam4uk -
                      Цитата calam4uk @
                      Синтаксис ё-маё

                      Я расписАл в три строки, чтобы было понятно, как всё происходит. Но можно собрать всё это в одну строку и не использовать промежуточных переменных.
                        Цитата Akina @
                        Цитата calam4uk @
                        Синтаксис ё-маё

                        Я расписАл в три строки, чтобы было понятно, как всё происходит. Но можно собрать всё это в одну строку и не использовать промежуточных переменных.

                        Да это я понял!!!
                        Спасибо)))
                          calam4uk, вот Вам ещё один вариант:
                          ExpandedWrap disabled
                            Option Compare Text
                            ...
                            Dim objControl As Control
                            For Each objControl In Me.Controls
                                If TypeName(objControl) = "CheckBox" Then
                                    objControl.Value = False
                                End If
                            Next

                          Кстати, учтите, что при установке значения "коробочки" произойдёт вызов соответствующего обработчика события Click.
                          Сообщение отредактировано: Dmitrii -
                            Dmitrii, посмотри его файл. Контролы - не на форме, так что не сработает.
                              Цитата Akina @
                              Контролы - не на форме...
                              Тогда так:
                              ExpandedWrap disabled
                                Option Compare Text
                                ...
                                Dim objControl As OLEObject
                                For Each objControl In Me.OLEObjects
                                    If Left(objControl.Name, 8) = "CheckBox" Then
                                        Me.Shapes(objControl.Name).OLEFormat.Object.Object.Value = False
                                    End If
                                Next

                              Код надо разместить в модуле листа, "контролы" которого обрабатываются.


                              calam4uk, если вдруг захотите использовать "коробочки" из панели "Формы", а не из панели "Элементы управления", то обращение к ним можно организовать так:
                              ExpandedWrap disabled
                                Sub Example()
                                For i = 1 To ActiveSheet.CheckBoxes.Count
                                    ActiveSheet.CheckBoxes(i).Value = False
                                Next
                                End Sub
                              Сообщение отредактировано: Dmitrii -
                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                              0 пользователей:


                              Рейтинг@Mail.ru
                              [ Script execution time: 0,0566 ]   [ 16 queries used ]   [ Generated: 19.12.25, 17:17 GMT ]