На главную Наши проекты:
Журнал   ·   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
  
> Как в 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 есть.
                                    Там не совсем так, но за ссылку спасибо. Оказывается все можно сделать проще...
                                      Добрый день!

                                      Большое спрасибо за макрос.

                                      Все работает, но у меня есть нюанс:

                                      Если ввести в ячейку построчный текст как в поле [Реквизиты] - выает ошибку и не вставляет.

                                      Что я делаю неправильно?

                                      (прикрепил скрин)
                                      Прикреплённый файлПрикреплённый файл____________.PNG (33,65 Кбайт, скачиваний: 190)
                                      Сообщение отредактировано: Azx -
                                        Azx, В макросе вообще нет никаких проблем с построчным текстом (кроме того, что в поле со списком, он будет отображаться в одну строку). Так что лучше опубликуйте свой файл (а не картинку), где происходит ошибка.
                                          Файл
                                          Прикреплённый файлПрикреплённый файлMacro.rar (37,79 Кбайт, скачиваний: 122)

                                          Добавлено
                                          Как только удаляю все из поля [Реквизиты] - все работает. Добавляю реквизиты - ошибка.
                                          Сообщение отредактировано: Azx -
                                            Azx, В Word (как и в Excel) есть ограничение на количество символов в поиске/замене.
                                            Если оно(кол-во) превышает 255, возникает ошибка. Так что заменить один текст на другой, таким способом - Вам не удастся.
                                            Но повторюсь, никаких проблем с построчным текстом нет.
                                            Сообщение отредактировано: pashulka -
                                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                            0 пользователей:


                                            Рейтинг@Mail.ru
                                            [ Script execution time: 0,0524 ]   [ 21 queries used ]   [ Generated: 1.05.24, 11:20 GMT ]