Свойства SelStart, SelLength, SelText элемента управления TextBox. Указание точки вставки, выделение части строки, вставка текста вместо выделенного.
Свойство TextBox.SelStart
Свойство TextBox.SelStart может принимать значения от 0 до длины строки, тип данных – Integer. Пример расположения точек вставки в строке «На дереве»: 0Н1а2 3д4е5р6е7в8е9
.
Присвоение свойству SelStart нового значения отменяет ранее сделанное выделение, задает свойству SelLength значение 0 и помещает точку вставки в указанное место.
При присвоении свойству TextBox.SelStart значения, превышающего длину строки, VBA Excel автоматически уменьшает его до длины строки. Присвоение свойству SelStart значения меньше нуля вызывает ошибку.
Свойство TextBox.SelLength
Свойство TextBox.SelLength может принимать значения от 0 до длины строки, тип данных – Integer.
При присвоении свойству SelLength значения, превышающего длину строки от точки вставки до ее конца, VBA Excel автоматически уменьшает это значение до длины строки от точки вставки до ее окончания.
Если значение свойства TextBox.SelLength равно нулю, значит выделенного текста нет. Присвоение этому свойству значения меньше нуля вызывает ошибку.
Свойство TextBox.SelText
Если в текстовом поле нет выделенных символов, свойство SelText возвращает пустую строку.
При присвоении свойству SelText, содержащему выделение, новой строки с помощью оператора присваивания (TextBox.SelText = «Новая строка»):
- ранее выделенный текст заменяется новым;
- свойству SelText присваивается пустая строка;
- выделение снимается (свойству SelLength присваивается значение 0);
- курсор устанавливается в конце вставленной подстроки.
Примеры кода VBA Excel
Свойства SelStart, SelLength, SelText доступны в VBA Excel независимо от того, установлен ли на элемент управления TextBox фокус. Но передача фокуса текстовому полю нужна для того, чтобы видеть выделенный участок текста или курсор в точке вставки.
Для реализации первых двух примеров достаточно разместить на пользовательской форме только текстовое поле TextBox1. Фокус в коде VBA Excel передавать не нужно, так как это единственный элемент управления на форме и фокус всегда на нем.
Пример 1
Установка курсора между четвертым и пятым символом строки в текстовом поле:
1 2 3 4 5 6 |
Private Sub UserForm_Initialize() With TextBox1 .Text = "Каракатица" .SelStart = 4 End With End Sub |
Пример 2
Выделение подстроки из 5 символов, начиная с 4 знака:
1 2 3 4 5 6 7 |
Private Sub UserForm_Initialize() With TextBox1 .Text = "Шумел камыш" .SelStart = 3 .SelLength = 5 End With End Sub |
Пример 3
Выделение подстроки, ее замена с помощью присвоения свойству TextBox.SelText нового значения, чтение этого свойства до присвоения и после.
Для реализации третьего примера добавим на пользовательскую форму кнопку CommandButton1. Для просмотра положения курсора после замены подстроки передадим фокус текстовому полю, так как после клика он будет на кнопке.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Private Sub CommandButton1_Click() With TextBox1 .Text = "Веселая корова" .SelStart = 8 .SelLength = 5 MsgBox "SelText до = " & .SelText .SelText = "буренк" MsgBox "SelText после = " & .SelText MsgBox "SelLength после = " & .SelLength MsgBox "SelStart после = " & .SelStart .SetFocus End With End Sub |