Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > VB for Application > Как в Excel привязать столбец к userform? |
Автор: ^D^ima 14.11.12, 07:07 |
Имеется таблица Excel. Как проще сделать так, чтобы при щелчке в любую ячейку определенного столбца открывалась UserForm и этой форме были переданы координаты ячейки? Или как привязать комбобокс к столбцу, чтобы пользователи выбирали данные этой ячейки из комбобокса? |
Автор: ^D^ima 14.11.12, 08:44 |
Я нашел пример, только помогите понять: 1 В примере есть комбобокс, визуально найти не могу. Он судя по всему создается не в realtime, тогда где посмотреть список объектов, которые есть на листе? 2 В свойствах этого комбобокс есть поле ListFillRange, там стоит значение "области". Где посмотреть эти "области" и что это такое? Sample__14_05_2010__22_29_35.zip (, : 420) |
Автор: Akina 14.11.12, 09:21 |
Открой Эксель. На листе пометь нужный диапазон (например, прямоугольный от C5 до F13, пометить заливкой... ну или весь столбец, как там тебе надо). Иди в редактор VBA. Добавь в проект форму UserForm1. Брось на неё надпись Label1. Выбери в списке объектов тот лист, на котором отмечал диапазон. Открой его модуль и напиши там (поправив во второй строке адрес помеченного диапазона): <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 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 Наслаждайся эффектом. |
Автор: ^D^ima 14.11.12, 10:17 |
Спасибо. А если на форму добавить объект, то как к нему обратиться можно? Например добавили комбобокс и хотим изменить его местоположение на странице. |
Автор: Akina 14.11.12, 10:22 |
Точно так же, как я изменяю текст надписи. |
Автор: ^D^ima 14.11.12, 10:37 |
Я имел в виду не на форме, а на листе worksheet: Если мы нажимаем свойство этого объекта, то выскакивает окно "формат элемента управления", а не полноценное окно properties как для всего Листа. Т.е. не посмотреть имя объекта, для обращения к нему. |
Автор: Akina 14.11.12, 11:08 |
Ну так и разбирайся в объектной модели Экселя, что это за объект и в каком контейнере и как его искать... |
Автор: Old Bat 14.11.12, 13:34 |
Цитата ^D^ima @ как к нему обратиться можно? Например добавили комбобокс и хотим изменить его местоположение на странице. ежели переместить вручную - то кликаешь по объекту мышой, удерживая Ctrl - и вперед ежели хочешь помучить программно, то имя автоматом формируется по принципу: название объекта + инкремент, т.о. в твоем случае <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> For Each xx In ActiveSheet.Shapes Debug.Print xx.Name Next выдаст нечто вроде Drop Down 1 |
Автор: ^D^ima 14.11.12, 13:50 |
Old Bat Получил Drop Down 2. А как затем что-то изменить у этого объекта? |
Автор: Akina 14.11.12, 14:02 |
А фигли ты Dr начинаешь набирать? тебе же показали - ActiveSheet.Shapes("Drop Down 2"). набирать надо... или около того. Ну или xx - только тогда напиши для него правильный Dim. |
Автор: Old Bat 14.11.12, 14:04 |
к объекту обращаемся либо по имени, либо по номеру, например: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ActiveSheet.Shapes("Drop Down 2").Name = "qwe" |
Автор: Old Bat 14.11.12, 15:49 |
Но по-хорошему вопрос решается стандартными средствами, без программинга, через ИМЯ диапазона. |
Автор: ^D^ima 14.11.12, 17:25 |
Old Bat А в примере во 2-м посте как создается combobox? У него нормальные свойства. |
Автор: Old Bat 14.11.12, 18:40 |
именно через диапазон, в данном случае с именем "области", ссылающееся на =Список!$A$1:$A$5 см. закладку ФОРМУЛЫ, раздел ОПРЕДЕЛЕННЫЕ ИМЕНА + встроенная справка, глава "Определение и использование имен в формулах" |
Автор: ^D^ima 14.11.12, 18:56 |
Ясно. Спасибо. Добавлено И все-же не нашел где там создается сам combobox? На форме его не видно, при создании Worksheet_Activate() тоже ничего нет, а обращение Me.Combo есть. |
Автор: Old Bat 14.11.12, 21:14 |
http://office.microsoft.com/ru-ru/excel-he...P010072599.aspx |
Автор: ^D^ima 15.11.12, 06:21 |
Там не совсем так, но за ссылку спасибо. Оказывается все можно сделать проще... |
Автор: Azx 06.03.20, 11:32 |
Добрый день! Большое спрасибо за макрос. Все работает, но у меня есть нюанс: Если ввести в ячейку построчный текст как в поле [Реквизиты] - выает ошибку и не вставляет. Что я делаю неправильно? (прикрепил скрин) ____________.PNG (, : 191) |
Автор: pashulka 07.03.20, 06:18 |
Azx, В макросе вообще нет никаких проблем с построчным текстом (кроме того, что в поле со списком, он будет отображаться в одну строку). Так что лучше опубликуйте свой файл (а не картинку), где происходит ошибка. |
Автор: Azx 09.03.20, 09:29 |
Файл Macro.rar (, : 122) Добавлено Как только удаляю все из поля [Реквизиты] - все работает. Добавляю реквизиты - ошибка. |
Автор: pashulka 17.03.20, 19:03 |
Azx, В Word (как и в Excel) есть ограничение на количество символов в поиске/замене. Если оно(кол-во) превышает 255, возникает ошибка. Так что заменить один текст на другой, таким способом - Вам не удастся. Но повторюсь, никаких проблем с построчным текстом нет. |