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

      Прикреплённый файлПрикреплённый файлSample__14_05_2010__22_29_35.zip (10,35 Кбайт, скачиваний: 420)
        Открой Эксель.
        На листе пометь нужный диапазон (например, прямоугольный от 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 -
          Спасибо.
          А если на форму добавить объект, то как к нему обратиться можно? Например добавили комбобокс и хотим изменить его местоположение на странице.
            Точно так же, как я изменяю текст надписи.
              Я имел в виду не на форме, а на листе worksheet:
              user posted image
              Если мы нажимаем свойство этого объекта, то выскакивает окно "формат элемента управления", а не полноценное окно properties как для всего Листа. Т.е. не посмотреть имя объекта, для обращения к нему.
                Ну так и разбирайся в объектной модели Экселя, что это за объект и в каком контейнере и как его искать...
                  Цитата ^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 -
                        к объекту обращаемся либо по имени, либо по номеру, например:
                        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,0380 ]   [ 19 queries used ]   [ Generated: 25.04.24, 05:01 GMT ]