На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
15 мая "Исходники.РУ" отмечают 20-летие присутствия в сети!
Поздравляем всех причастных и неравнодушных с юбилеем сайта!
И огромное спасибо всем, кто был с нами все эти годы!
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
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Как в Excel привязать столбец к userform?
    Имеется таблица Excel. Как проще сделать так, чтобы при щелчке в любую ячейку определенного столбца открывалась UserForm и этой форме были переданы координаты ячейки? Или как привязать комбобокс к столбцу, чтобы пользователи выбирали данные этой ячейки из комбобокса?
    "Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
      Я нашел пример, только помогите понять:
      1 В примере есть комбобокс, визуально найти не могу. Он судя по всему создается не в realtime, тогда где посмотреть список объектов, которые есть на листе?
      2 В свойствах этого комбобокс есть поле ListFillRange, там стоит значение "области". Где посмотреть эти "области" и что это такое?

      Прикреплённый файлПрикреплённый файлSample__14_05_2010__22_29_35.zip (10,35 Кбайт, скачиваний: 331)
      "Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
        Открой Эксель.
        На листе пометь нужный диапазон (например, прямоугольный от C5 до F13, пометить заливкой... ну или весь столбец, как там тебе надо).
        Иди в редактор VBA.
        Добавь в проект форму UserForm1.
        Брось на неё надпись Label1.
        Выбери в списке объектов тот лист, на котором отмечал диапазон.
        Открой его модуль и напиши там (поправив во второй строке адрес помеченного диапазона):
        ExpandedWrap disabled
          Private Sub Worksheet_SelectionChange(ByVal Target As Range)
          If Not Intersect(Target, Range("C5:F13")) Is Nothing Then
              UserForm1.Label1.Caption = "Address: " & Target.Address
              UserForm1.Show
          End If
          End Sub

        Наслаждайся эффектом.
        Сообщение отредактировано: Akina -
        Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
        Есть претензии ко мне как к участнику? да ради бога.
        Не нравятся мои ответы? не читайте их.
        В общем, берегите себя. Нервные клетки не восстанавливаются.
          Спасибо.
          А если на форму добавить объект, то как к нему обратиться можно? Например добавили комбобокс и хотим изменить его местоположение на странице.
          "Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
            Точно так же, как я изменяю текст надписи.
            Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
            Есть претензии ко мне как к участнику? да ради бога.
            Не нравятся мои ответы? не читайте их.
            В общем, берегите себя. Нервные клетки не восстанавливаются.
              Я имел в виду не на форме, а на листе worksheet:
              user posted image
              Если мы нажимаем свойство этого объекта, то выскакивает окно "формат элемента управления", а не полноценное окно properties как для всего Листа. Т.е. не посмотреть имя объекта, для обращения к нему.
              "Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
                Ну так и разбирайся в объектной модели Экселя, что это за объект и в каком контейнере и как его искать...
                Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
                Есть претензии ко мне как к участнику? да ради бога.
                Не нравятся мои ответы? не читайте их.
                В общем, берегите себя. Нервные клетки не восстанавливаются.
                  Цитата ^D^ima @
                  как к нему обратиться можно? Например добавили комбобокс и хотим изменить его местоположение на странице.

                  ежели переместить вручную - то кликаешь по объекту мышой, удерживая Ctrl - и вперед
                  ежели хочешь помучить программно, то имя автоматом формируется по принципу: название объекта + инкремент, т.о. в твоем случае

                  ExpandedWrap disabled
                    For Each xx In ActiveSheet.Shapes
                    Debug.Print xx.Name
                    Next

                  выдаст нечто вроде Drop Down 1
                    Old Bat
                    Получил Drop Down 2. А как затем что-то изменить у этого объекта?
                    user posted image
                    Сообщение отредактировано: ^D^ima -
                    "Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
                      Цитата ^D^ima @
                      Old Bat

                      А фигли ты Dr начинаешь набирать? тебе же показали - ActiveSheet.Shapes("Drop Down 2"). набирать надо... или около того. Ну или xx - только тогда напиши для него правильный Dim.
                      Сообщение отредактировано: Akina -
                      Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
                      Есть претензии ко мне как к участнику? да ради бога.
                      Не нравятся мои ответы? не читайте их.
                      В общем, берегите себя. Нервные клетки не восстанавливаются.
                        к объекту обращаемся либо по имени, либо по номеру, например:
                        ExpandedWrap disabled
                          ActiveSheet.Shapes("Drop Down 2").Name = "qwe"
                          Но по-хорошему вопрос решается стандартными средствами, без программинга, через ИМЯ диапазона.
                            Old Bat
                            А в примере во 2-м посте как создается combobox? У него нормальные свойства.
                            "Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
                              именно через диапазон, в данном случае с именем "области", ссылающееся на =Список!$A$1:$A$5

                              см. закладку ФОРМУЛЫ, раздел ОПРЕДЕЛЕННЫЕ ИМЕНА
                              + встроенная справка, глава "Определение и использование имен в формулах"
                                Ясно. Спасибо.

                                Добавлено
                                И все-же не нашел где там создается сам combobox? На форме его не видно, при создании Worksheet_Activate() тоже ничего нет, а обращение Me.Combo есть.
                                "Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script Execution time: 0,1244 ]   [ 20 queries used ]   [ Generated: 5.06.20, 21:57 GMT ]