При выделении ячейки в excel появляется textbox
Вкладка Office позволяет редактировать и просматривать в Office с вкладками и значительно упрощает работу .
- Повторное использование чего угодно: Добавляйте наиболее часто используемые или сложные формулы, диаграммы и все остальное в избранное и быстро используйте их в будущем.
- Более 20 текстовых функций: Извлечь число из текстовой строки; Извлечь или удалить часть текстов; Преобразование чисел и валют в английские слова.
- Инструменты слияния : Несколько книг и листов в одну; Объединить несколько ячеек / строк / столбцов без потери данных; Объедините повторяющиеся строки и сумму.
- Разделить инструменты : Разделение данных на несколько листов в зависимости от ценности; Из одной книги в несколько файлов Excel, PDF или CSV; От одного столбца к нескольким столбцам.
- Вставить пропуск Скрытые / отфильтрованные строки; Подсчет и сумма по цвету фона ; Отправляйте персонализированные электронные письма нескольким получателям массово.
- Суперфильтр: Создавайте расширенные схемы фильтров и применяйте их к любым листам; Сортировать по неделям, дням, периодичности и др .; Фильтр жирным шрифтом, формулы, комментарий .
- Более 300 мощных функций; Работает с Office 2007-2019 и 365; Поддерживает все языки; Простое развертывание на вашем предприятии или в организации.
Удивительный! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Экономьте 50% своего времени и сокращайте тысячи щелчков мышью каждый день!
2. в Microsoft Visual Basic для приложений окна, скопируйте и вставьте приведенный ниже код VBA в окно кода.
Заметки:
Пожалуйста, измените их по своему усмотрению.
3. нажмите другой + Q клавиши одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.
UserForm.TextBox – это элемент управления пользовательской формы, предназначенный для ввода, редактирования и вывода информации в текстовом формате.
Текстовое поле незаменимо, когда необходимо заполнить пользовательскую форму новой информацией. Например, это может быть ФИО нового сотрудника и его паспортные данные, сумма выручки за день, новый электронный адрес и многое-многое другое.
Если с помощью текстового поля требуется вводить заранее известную информацию, элементы которой можно сгруппировать в список, то в этом случае удобнее вместо элемента управления TextBox использовать ListBox или ComboBox.
Вводить информацию в TextBox на открытой форме можно не только с помощью клавиатуры, но и вставкой текста из буфера обмена. Когда текстовое поле применяется для ввода пароля, есть возможность отобразить все его знаки замещающим символом, например, звездочкой.
Иногда, если на пользовательской форме используется только одно текстовое поле и кнопка «OK» (или кнопки «OK» и «Отмена»), для ввода информации такую форму можно заменить функцией InputBox, а для вывода информации, когда не требуется редактирование отображаемого текста, – функцией MsgBox.
Свойства текстового поля
Свойство | Описание |
---|---|
AutoSize* | Автоподбор размера текстового поля. True – размер автоматически подстраивается под длину размещаемой строки. False – размер элемента управления определяется свойствами Width и Height. |
AutoTab | Включение автоматической табуляции – передачи фокуса следующему элементу управления при достижении максимального числа символов при значениях свойства MaxLenght > 0. True – автоматическая табуляция включена, False – выключена. |
ControlSource | Ссылка на источник данных для поля TextBox. |
ControlTipText | Текст всплывающей подсказки при наведении курсора на TextBox. |
Enabled | Возможность ввода, редактирования, копирования, вставки, удаления текста. True – все перечисленные опции включены, False – выключены (цвет текста в поле становится серым). |
Font | Шрифт, начертание и размер текста в поле. |
Height | Высота текстового поля. |
Left | Расстояние от левого края внутренней границы пользовательской формы до левого края текстового поля. |
Locked | Запрет ввода, редактирования, удаления текста. True – перечисленные опции запрещены (разрешено выделение и копирование текста), False – перечисленные опции разрешены. |
MaxLenght | Максимальная длина строки. По умолчанию – 0, что означает – ограничений нет. |
Multiline | Устанавливает многострочный (True) или однострочный (False) режим ввода-вывода текста. |
PasswordChar | Задает символ, который будет отображаться при вводе знаков пароля. |
TabIndex | Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой свойством AutoTab или нажатием клавиш «Tab», «Enter». Отсчет начинается с 0. |
Text** | Текстовое содержимое (значение) поля (=Value). |
TextAlign | Выравнивание текста: 1 (fmTextAlignLeft) – по левому краю, 2 (fmTextAlignCenter) – по центру, 3 (fmTextAlignRight) – по правому краю. |
Top | Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края текстового поля. |
Value** | Текстовое содержимое (значение) поля (=Text). |
Visible | Видимость текстового поля. True – TextBox отображается на пользовательской форме, False – TextBox скрыт. |
Width | Ширина текстового поля. |
WordWrap | Актуально при Multiline = True. Переход на новую строку при достижении границы текстового поля. True – переход включен, False – переход выключен. |
* При использовании свойства AutoSize в значении True следует учитывать, что автоматическое изменение размеров поля при вводе текста может нарушить дизайн пользовательской формы.
** Text и Value — это два обозначения одного и того же свойства. Если в окне Properties элемента управления TextBox в поле свойства Text начать ввод строки, в поле Value ввод будет дублироваться. И наоборот, при вводе текста в поле свойства Value, дублирование произойдет в поле Text.
В таблице перечислены только основные, часто используемые свойства текстового поля. Все доступные свойства отображены в окне Properties элемента управления TextBox.
Свойства BackColor, BackStyle, BorderColor, BorderStyle отвечают за внешнее оформление текстового поля и его границ. Попробуйте выбирать доступные значения этих свойств в окне Properties, наблюдая за изменениями внешнего вида элемента управления TextBox на проекте пользовательской формы.
Привязка текстового поля к ячейке
Привязать элемент управления TextBox к ячейке на рабочем листе можно двумя способами.
1. В окне Properties элемента управления TextBox в поле свойства ControlSource необходимо указать адрес ячейки:
Допустим, у нас есть два открытых файла: «Книга1» и «Книга2», причем, файл «Книга1» активен и в нем находится исполняемый код VBA.
В общем случае при обращении к ячейке неактивной рабочей книги «Книга2» из кода файла «Книга1» прописывается полный путь:
Удобнее обращаться к ячейке через свойство рабочего листа Cells(номер строки, номер столбца), так как вместо номеров строк и столбцов можно использовать переменные. Обратите внимание, что при обращении к любой рабочей книге, она должна быть открыта, иначе произойдет ошибка. Закрытую книгу перед обращением к ней необходимо открыть.
Теперь предположим, что у нас в активной книге «Книга1» активны «Лист1» и ячейка на нем «A1». Тогда обращение к ячейке «A1» можно записать следующим образом:
Точно также можно обращаться и к другим ячейкам активного рабочего листа, кроме обращения ActiveCell, так как активной может быть только одна ячейка, в нашем примере – это ячейка «A1».
Если мы обращаемся к ячейке на неактивном листе активной рабочей книги, тогда необходимо указать этот лист:
Имя ярлыка может совпадать с основным именем листа. Увидеть эти имена можно в окне редактора VBA в проводнике проекта. Без скобок отображается основное имя листа, в скобках – имя ярлыка.
Обращение к ячейке по индексу
К ячейке на рабочем листе можно обращаться по ее индексу (порядковому номеру), который считается по расположению ячейки на листе слева-направо и сверху-вниз.
Например, индекс ячеек в первой строке равен номеру столбца. Индекс ячеек во второй строке равен количеству ячеек в первой строке (которое равно общему количеству столбцов на листе, зависящему от версии Excel) плюс номер столбца. Индекс ячеек в третьей строке равен количеству ячеек в двух первых строках плюс номер столбца. И так далее.
Для примера, Cells(4) та же ячейка, что и Cells(1, 4). Используется такое обозначение редко, тем более, что у разных версий Excel может быть разным количество столбцов и строк на рабочем листе.
По индексу можно обращаться к ячейке не только на всем рабочем листе, но и в отдельном диапазоне. Нумерация ячеек осуществляется в пределах заданного диапазона по тому же правилу: слева-направо и сверху-вниз. Вот индексы ячеек диапазона Range(«A1:C3»):
Обращение к ячейке Range("A1:C3").Cells(5) соответствует выражению Range("B2") .
Обращение к ячейке по имени
Если ячейке на рабочем листе Excel присвоено имя (Формулы –> Присвоить имя), то обращаться к ней можно по присвоенному имени.
Допустим одной из ячеек присвоено имя – «Итого», тогда обратиться к ней можно – Range("Итого") .
Запись информации в ячейку
Содержание ячейки определяется ее свойством «Value», которое в VBA Excel является свойством по умолчанию и его можно явно не указывать. Записывается информация в ячейку при помощи оператора присваивания «=»:
У вас большой монитор, но таблицы, с которыми вы работаете - еще больше. И, пробегая взглядом по экрану в поисках нужной информации, всегда есть шанс "соскользнуть" взглядом на соседнюю строчку и посмотреть не туда. Я даже знаю людей, который для таких случаев постоянно держат недалеко от себя деревянную линейку, чтобы приложить ее к строке на мониторе. Технологии будущего!
А если при движении активной ячейки по листу будет подсвечиваться текущая строка и столбец? Своего рода координатное выделение примерно такого вида:
Поудобнее, чем линейка, правда?
Есть несколько способов разной сложности, чтобы реализовать такое. Каждый способ - со своими плюсами и минусами. Давайте разберем их детально.
Способ 1. Очевидный. Макрос, выделяющий текущую строку и столбец
Самый очевидный путь для решения нашей проблемы "в лоб" - нам нужен макрос, который будет отслеживать изменение выделения на листе и выделять целую строку и столбец для текущей ячейки. Также желательно иметь возможность при необходимости включать и отключать эту функцию, чтобы такое крестообразное выделение не мешало нам вводить, например, формулы, а работало только тогда, когда мы просматриваем список в поисках нужной информации. Это приводит нас к трем макросам (выделения, включения и выключения), которые нужно будет добавить в модуль листа.
Откройте лист со таблицей, в которой хотите получить такое координатное выделение. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этих трех макросов:
Измените адрес рабочего диапазона на свой - именно в пределах этого диапазона и будет работать наше выделение. Затем закройте редактор Visual Basic и вернитесь в Excel.
Нажмите сочетание клавиш ALT+F8, чтобы открыть окно со списком доступных макросов. Макрос Selection_On, как нетрудно догадаться, включает координатное выделение на текущем листе, а макрос Selection_Off - выключает его. В этом же окне, нажав кнопку Параметры (Options) можно назначить этим макросам сочетания клавиш для удобного запуска.
Плюсы этого способа:
- относительная простота реализации
- выделение - операция безобидная и никак не изменяет содержимое или форматирование ячеек листа, все остается как есть
Минусы этого способа:
- такое выделение некорректно работает в том случае, если на листе есть объединенные ячейки - выделяются сразу все строки и столбцы, входящие в объединение
- если случайно нажать клавишу Delete, то очистится не только активная ячейка, а вся выделенная область, т.е. удалятся данные из всей строки и столбца
Способ 2. Оригинальный. Функция ЯЧЕЙКА + Условное форматирование
Этот способ хотя и имеет пару недостатков, мне представляется весьма изящным. Реализовать что-либо, используя только встроенные средства Excel, минимально влезая в программирование на VBA - высший пилотаж ;)
Способ основан на использовании функции ЯЧЕЙКА (CELL), которая может выдавать массу различной информации по заданной ячейке - высоту, ширину, номер строки-столбца, числовой формат и т.д.. Эта функция имеет два аргумента:
- кодовое слово для параметра, например "столбец" или "строка"
- адрес ячейки, для которой мы хотим определить значение этого параметра
Хитрость в том, что второй аргумент не является обязательным. Если он не указан, то берется текущая активная ячейка.
Вторая составляющая этого способа - условное форматирование. Эта крайне полезная функция Excel позволяет автоматически форматировать ячейки, если они удовлетворяют заданным условиям. Если соединить эти две идеи в одно целое, то получим следующий алгоритм реализации нашего координатного выделения через условное форматирование:
- Выделяем нашу таблицу, т.е. те ячейки, в которых в будущем должно отображаться координатное выделение.
- В Excel 2003 и более старших версиях открываем меню Формат - Условное форматирование - Формула (Format - Conditional Formatting - Formula) . В Excel 2007 и новее - жмем на вкладке Главная (Home) кнопку Условное форматирование - Создать правило (Conditional Formatting - Create Rule) и выбираем тип правила Использовать формулу для определения форматируемых ячеек (Use formula)
- Вводим формулу для нашего координатного выделения:
Все почти готово, но остался один нюанс. Дело в том, что Excel не считает изменение выделения изменением данных на листе. И, как следствие, не запускает пересчет формул и перекраску условного форматирования только при изменении положения активной ячейки. Поэтому добавим в модуль листа простой макрос, который будет это делать. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этого простого макроса:
Теперь при изменении выделения будет запускаться процесс пересчета формулы с функцией ЯЧЕЙКА в условном форматировании и заливаться текущая строка и столбец.
Плюсы этого способа:
- Условное форматирование не нарушает пользовательское форматирование таблицы
- Этот вариант выделения корректно работает с объединенными ячейками.
- Нет риска удалить целую строку и столбец с данными при случайном нажатии Delete.
- Макросы используются минимально
Минусы этого способа:
- Формулу для условного форматирования надо вводить вручную.
- Нет быстрого способа включить-выключить такое форматирование - оно включено всегда, пока не будет удалено правило.
Способ 3. Оптимальный. Условное форматирование + макросы
Золотая середина. Используем механизм отслеживания выделения на листе при помощи макросов из способа-1 и добавим к нему безопасное выделение цветом с помощью условного форматирования из способа-2.
Откройте лист со таблицей, в которой хотите получить такое координатное выделение. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этих трех макросов:
Не забудьте изменить адрес рабочего диапазона на адрес своей таблицы. Закройте редактор Visual Basic и вернитесь в Excel. Чтобы использовать добавленные макросы, нажмите сочетание клавиш ALT+F8 и действуйте аналогично способу 1.
Способ 4. Красивый. Надстройка FollowCellPointer
Excel MVP Jan Karel Pieterse родом из Нидерландов раздает у себя на сайте бесплатную надстройку FollowCellPointer(36Кб), которая решает ту же задачу, отрисовывая с помощью макросов графические линии-стрелки для подсветки текущей строки и столбца:
Красивое решение. Не без глюков местами, но попробовать точно стоит. Качаем архив, распаковываем на диск и устанавливаем надстройку:
Добрый день!
Проблема: На листе "данные" ячейки заполняются с помощью раскрывающегося списка. На листе "сводный" - соответствующие заполненые ячейки отмечаются "крестиками". При наведении мышкой или активации ячейки с крестиком требуется вывод информации из соответствующей ячейки на листе "данные". Пример прилагается.
Добрый день!
Проблема: На листе "данные" ячейки заполняются с помощью раскрывающегося списка. На листе "сводный" - соответствующие заполненые ячейки отмечаются "крестиками". При наведении мышкой или активации ячейки с крестиком требуется вывод информации из соответствующей ячейки на листе "данные". Пример прилагается. marysabel
Если без макросов - то полумера: встать на B2 сводного, создать имя, ссылающееся на A1 данных, далее использовать это имя в проверке ввода в сводном, но только как индикацию (если встанем на ячейку - появится выпадающий список, а в нём значение первого листа).
Если без макросов - то полумера: встать на B2 сводного, создать имя, ссылающееся на A1 данных, далее использовать это имя в проверке ввода в сводном, но только как индикацию (если встанем на ячейку - появится выпадающий список, а в нём значение первого листа). Hugo
Так я с листа "сводный" по гиперссылке уйду на лист "данные". А надо остаться.
Так я с листа "сводный" по гиперссылке уйду на лист "данные". А надо остаться. marysabel
Так я с листа "сводный" по гиперссылке уйду на лист "данные". А надо остаться. Автор - marysabel
Дата добавления - 28.05.2014 в 14:23
Не могу реализовать. Не понятно, как "использовать это имя в проверке ввода в сводном, но только как индикацию"? А Вы не могли бы на моем приложенном файле это показать? И результат тоже прикрепить?
Спасибо заранее.
Не могу реализовать. Не понятно, как "использовать это имя в проверке ввода в сводном, но только как индикацию"? А Вы не могли бы на моем приложенном файле это показать? И результат тоже прикрепить?
Спасибо заранее. marysabel
Не могу реализовать. Не понятно, как "использовать это имя в проверке ввода в сводном, но только как индикацию"? А Вы не могли бы на моем приложенном файле это показать? И результат тоже прикрепить?
Спасибо заранее. Автор - marysabel
Дата добавления - 28.05.2014 в 14:37
Показать смогу. Но только где-то в 22:00 по Москве. Если к тому времени не забуду.
"использовать это имя в проверке ввода" - это ведь элементарно. Ставите проверку ввода, в настройке списка как источник указываете =имя
Показать смогу. Но только где-то в 22:00 по Москве. Если к тому времени не забуду.
"использовать это имя в проверке ввода" - это ведь элементарно. Ставите проверку ввода, в настройке списка как источник указываете =имя Hugo
Очень интересная тема. Перерыл интернет в поисках интересного решения.
И кажется нашел. Ролловер эффект в Excel
Лист защищен без пароля.
Код макроса[vba]
Для Excel2007 и выше формулу можно сократить использовав функцию ЕСЛИОШИБКА()
Как получилось см. файл.
Очень интересная тема. Перерыл интернет в поисках интересного решения.
И кажется нашел. Ролловер эффект в Excel
Лист защищен без пароля.
Код макроса[vba]
Для Excel2007 и выше формулу можно сократить использовав функцию ЕСЛИОШИБКА()
Как получилось см. файл. AlexM
Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
Для Excel2007 и выше формулу можно сократить использовав функцию ЕСЛИОШИБКА()
Как получилось см. файл. Автор - AlexM
Дата добавления - 28.05.2014 в 18:37
Ну и мой обещанный вариант. Хотя с гиперссылкой конечно лучше.
Ну и до кучи навороченное применение этого ролловер эффекта - периодическая система элементов. Где взял - не записал. но нашёл - она лежит по ссылке в тексте, который по ссылке в тексте, ссылку на который дал AlexM
Ну и мой обещанный вариант. Хотя с гиперссылкой конечно лучше.
Ну и до кучи навороченное применение этого ролловер эффекта - периодическая система элементов. Где взял - не записал. но нашёл - она лежит по ссылке в тексте, который по ссылке в тексте, ссылку на который дал AlexM Hugo
Спасибо большое всем, кто принял участие в исследовании данного вопроса! Я попробовала все варианты применительно к моему рабочему файлу…. Время 2 часа ночи, оторваться не смогла, очень затянуло…
Hugo Я с самого начала поняла все правильно, но из-за глупой ошибки реализовать Ваш вариант не смогла…. Спасибо, что выложили файл-пример, а то у меня бы комплекс неполноценности развился бы…..
ZORRO2005 Красиво! Быстро в реализации… Получается, надо на листе одну формулу прописать и все… Для меня это актуально, не надо остальные рабочие ячейки трогать. Единственная загвоздка у меня в том, что при активации ячейки мышкой, данные не появляются сразу, приходиться нажимать F9 для пересчета листа. Все настройки проверила – в параметрах на закладке "вычисления" стоит выборка "автоматически", свойства ячеек проверила. пока причину не нашла…. Буду искать…
AlexM Вам отдельное "спасибо" за открытие ранее мне неизвестного инструмента – ролловер эффекта! Спасибо за ссылку на инфу по этому вопросу, очень интересно и полезно, с удовольствием буду изучать и применять в дальнейшем в работе. Видимо, Ваш вариант с гиперссылкой возьму за основной. Правда, повозиться придется с формулами, у меня в рабочем файле на листе "сводный" информация с 14 листов, причем, все раскрашено и куски сдвинуты для удобства пользователей. Но оно того стоит… Файл в результате тяжеловат получается по размеру, но не критично.
_Boroda_ Спасибо за Ваш вариант, практически, точь в точь, как просила – с выноской. Обязательно буду применять для наглядности в работе, очень эффектно! Только чуть подработаю в плане 1004 ошибки (юзвери они такие, так и норовят на пустую ячейку ткнуть – и страшно пугаются после).
Еще раз - всем спасибо.
Спасибо большое всем, кто принял участие в исследовании данного вопроса! Я попробовала все варианты применительно к моему рабочему файлу…. Время 2 часа ночи, оторваться не смогла, очень затянуло…
Hugo Я с самого начала поняла все правильно, но из-за глупой ошибки реализовать Ваш вариант не смогла…. Спасибо, что выложили файл-пример, а то у меня бы комплекс неполноценности развился бы…..
ZORRO2005 Красиво! Быстро в реализации… Получается, надо на листе одну формулу прописать и все… Для меня это актуально, не надо остальные рабочие ячейки трогать. Единственная загвоздка у меня в том, что при активации ячейки мышкой, данные не появляются сразу, приходиться нажимать F9 для пересчета листа. Все настройки проверила – в параметрах на закладке "вычисления" стоит выборка "автоматически", свойства ячеек проверила. пока причину не нашла…. Буду искать…
AlexM Вам отдельное "спасибо" за открытие ранее мне неизвестного инструмента – ролловер эффекта! Спасибо за ссылку на инфу по этому вопросу, очень интересно и полезно, с удовольствием буду изучать и применять в дальнейшем в работе. Видимо, Ваш вариант с гиперссылкой возьму за основной. Правда, повозиться придется с формулами, у меня в рабочем файле на листе "сводный" информация с 14 листов, причем, все раскрашено и куски сдвинуты для удобства пользователей. Но оно того стоит… Файл в результате тяжеловат получается по размеру, но не критично.
_Boroda_ Спасибо за Ваш вариант, практически, точь в точь, как просила – с выноской. Обязательно буду применять для наглядности в работе, очень эффектно! Только чуть подработаю в плане 1004 ошибки (юзвери они такие, так и норовят на пустую ячейку ткнуть – и страшно пугаются после).
Еще раз - всем спасибо. marysabel
Читайте также: