Положение курсора в textbox vba excel
SelStart – это свойство элемента управления TextBox, которое задает или возвращает начальную точку выделения подстроки или точку вставки, если текст в поле не выделен.
Свойство TextBox.SelStart может принимать значения от 0 до длины строки, тип данных – Integer. Пример расположения точек вставки в строке «На дереве»: 0 Н 1 а 2 3 д 4 е 5 р 6 е 7 в 8 е 9 .
Присвоение свойству SelStart нового значения отменяет ранее сделанное выделение, задает свойству SelLength значение 0 и помещает точку вставки в указанное место.
При присвоении свойству TextBox.SelStart значения, превышающего длину строки, VBA Excel автоматически уменьшает его до длины строки. Присвоение свойству SelStart значения меньше нуля вызывает ошибку.
Свойство TextBox.SelLength
SelLength – это свойство элемента управления TextBox, которое задает или возвращает количество выделяемых (выделенных) символов в строке, содержащейся в текстовом поле, начиная с начальной позиции, определяемой свойством TextBox.SelStart.
Свойство TextBox.SelLength может принимать значения от 0 до длины строки, тип данных – Integer.
При присвоении свойству SelLength значения, превышающего длину строки от точки вставки до ее конца, VBA Excel автоматически уменьшает это значение до длины строки от точки вставки до ее окончания.
Если значение свойства TextBox.SelLength равно нулю, значит выделенного текста нет. Присвоение этому свойству значения меньше нуля вызывает ошибку.
Свойство TextBox.SelText
SelText – это свойство элемента управления TextBox, которое возвращает выделенную часть строки, содержащуюся в текстовом поле, а также способное принимать новое значение, заменяющее предыдущее выделение.
Если в текстовом поле нет выделенных символов, свойство SelText возвращает пустую строку.
При присвоении свойству SelText, содержащему выделение, новой строки с помощью оператора присваивания (TextBox.SelText = «Новая строка»):
- ранее выделенный текст заменяется новым;
- свойству SelText присваивается пустая строка;
- выделение снимается (свойству SelLength присваивается значение 0);
- курсор устанавливается в конце вставленной подстроки.
Примеры кода VBA Excel
Свойства SelStart, SelLength, SelText доступны в VBA Excel независимо от того, установлен ли на элемент управления TextBox фокус. Но передача фокуса текстовому полю нужна для того, чтобы видеть выделенный участок текста или курсор в точке вставки.
Для реализации первых двух примеров достаточно разместить на пользовательской форме только текстовое поле TextBox1. Фокус в коде VBA Excel передавать не нужно, так как это единственный элемент управления на форме и фокус всегда на нем.
Пример 1
Установка курсора между четвертым и пятым символом строки в текстовом поле:
Вы можете сделать Windows API (программный интерфейс приложения) в библиотеку DLL microsoft Windows (динамическая ссылка), чтобы получить и установить текущее положение курсора. Текущую позицию можно получить с помощью функции GetCursorPos в USER32.DLL.
Дополнительная информация
Microsoft Excel не имеют встроенных функций для получения или настройка позиции курсора. Однако с помощью функции Declare в макросе Microsoft Excel Visual Basic для приложений вызвать функцию Microsoft Windows для доступа к текущему положению. Вы также можете использовать другую функцию SetCursorPos, чтобы настроить положение курсора. Функцию SetCursorPos можно использовать в циклической структуре для перемещения курсора по экрану.
Корпорация Майкрософт предоставляет примеры процедур Visual Basic для приложений только для иллюстрации без каких-либо гарантий, выраженных или подразумеваемых, включая, помимо этого, подразумеваемые гарантии пригодности для продавца или пригодности для определенной цели. В Visual Basic этой статье предоставляются процедуры "как есть", и корпорация Майкрософт не гарантирует, что их можно использовать в разных ситуациях. Хотя специалисты службы поддержки Майкрософт могут объяснить функциональные возможности конкретного макроса, они не будут изменять эти примеры, чтобы обеспечить дополнительные функции, и не будут помогать создавать макросы, которые отвечают вашим потребностям. Если у вас ограниченный опыт программирования, обратитесь к одному из поставщиков решений Майкрософт. Поставщики решений предлагают широкий спектр платных служб, включая создание настраиваемого макроса. Для получения дополнительных сведений о поставщиках решений Майкрософт позвоните в службу сведений о клиентах Майкрософт по телефону (800) 426-9400.
ПРИМЕРЫ
Введите следующий код в новый модуль:
Щелкните в любом месте Get_Cursor_Pos и нажмите клавишу F5, чтобы Get_Cursor_Pos макрос.
Щелкните в любом месте Set_Cursor_Pos и нажмите клавишу F5, чтобы Set_Cursor_Pos макрос.
You can make a Windows API (application programming interface) call to a Microsoft Windows DLL (dynamic-link Library) to get and set the current cursor position. The current position can be obtained by using the GetCursorPos function in USER32.DLL.
More Information
Microsoft Excel does not have the built-in functionality to get or set the cursor position. However, you can use the Declare statement in a Microsoft Excel Visual Basic for Applications macro to call a Microsoft Windows function to access the current position. You can also use another function SetCursorPos to set the cursor position. The SetCursorPos function can be used in a looping structure to move the cursor across the screen.
Microsoft provides examples of Visual Basic for Applications procedures for illustration only, without warranty either expressed or implied, including, but not limited to the implied warranties of merchantability and/or fitness for a particular purpose. The Visual Basic procedures in this article are provided 'as is' and Microsoft does not guarantee that they can be used in all situations. While Microsoft support professionals can help explain the functionality of a particular macro, they will not modify these examples to provide added functionality, nor will they help you construct macros to meet your specific needs. If you have limited programming experience, you may want to consult one of the Microsoft Solution Providers. Solution Providers offer a wide range of fee-based services, including creating custom macros. For more information about Microsoft Solution Providers, call Microsoft Customer Information Service at (800) 426-9400.
EXAMPLES
Type the following code into a new module:
Click anywhere inside the text of the Get_Cursor_Pos routine and press the F5 key to run the Get_Cursor_Pos macro.
You will get a message box displayed with the coordinates of the current position of the mouse pointer.
Click anywhere inside the text of the Set_Cursor_Pos routine and press the F5 key to run the Set_Cursor_Pos macro.
Метод SetFocus перемещает фокус в указанную форму, указанный контроль на активной форме или указанное поле на активной таблице данных.
Синтаксис
выражения. SetFocus
выражение Переменная, представляющие объект TextBox .
Возвращаемое значение
Примечания
Используйте метод SetFocus , когда нужно, чтобы определенное поле или управление было сосредоточено таким образом, чтобы все входные данные пользователя были направлены на этот объект.
Чтобы прочитать некоторые свойства управления, необходимо убедиться, что управление имеет фокус. Например, текстовое поле должно быть сосредоточено перед чтением его свойства Text .
Другие свойства можно установить только в том случае, если у управления нет фокуса. Например, нельзя установить видимые или включенные свойства управления на False (0), если этот контроль имеет фокус.
Вы также можете использовать метод SetFocus для навигации в форме в соответствии с определенными условиями. Например, если пользователь выбирает не применимый для первого набора вопросов в форме, которая является вопросником, код Visual Basic может автоматически пропустить вопросы в этом наборе и переместить фокус на первый контроль в следующем наборе вопросов.
Фокус можно переместить только в видимый контроль или форму. Форма и элементы управления формы не видны до завершения события Нагрузка формы. Поэтому, если для перемещения фокуса в эту форму используется метод SetFocus в событии Нагрузка формы, перед методом SetFocus необходимо использовать метод repaint.
Нельзя переместить фокус на управление, если его свойство Включено настроено на False. Прежде чем переместить фокус на этот контроль, необходимо установить свойство Включено управления в True (1). Однако можно переместить фокус на управление, если его заблокированное свойство настроено на True.
Если форма содержит элементы управления, для которых свойство Включено настроено на True, нельзя переместить фокус в сам форму. Фокус можно переместить только на элементы управления формы. В этом случае, если вы пытаетесь использовать SetFocus для перемещения фокуса в форму, фокус заданной для управления формой, которая последний раз получала фокус.
Используйте метод SetFocus для перемещения фокуса в подформу, которая является типом управления. Вы также можете переместить фокус на управление на подформе с помощью метода SetFocus дважды, перемещая фокус сначала на подформу, а затем на управление на подформе.
Пример
В следующем примере метод SetFocus перемещает фокус на текстовое поле EmployeeID в форме Employees .
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
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 необходимо указать адрес ячейки:
Читайте также: