Перейти к содержимому

VBA Excel. Свойства SelStart, SelLength, SelText (TextBox)

Свойства SelStart, SelLength, SelText элемента управления TextBox. Указание точки вставки, выделение части строки, вставка текста вместо выделенного.

  1. Свойство TextBox.SelStart
  2. Свойство TextBox.SelLength
  3. Свойство TextBox.SelText
  4. Примеры кода VBA Excel

Свойство TextBox.SelStart

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
Установка курсора между четвертым и пятым символом строки в текстовом поле:

Private Sub UserForm_Initialize()
  With TextBox1
    .Text = "Каракатица"
    .SelStart = 4
  End With
End Sub

Пример 2
Выделение подстроки из 5 символов, начиная с 4 знака:

Private Sub UserForm_Initialize()
  With TextBox1
    .Text = "Шумел камыш"
    .SelStart = 3
    .SelLength = 5
  End With
End Sub

Пример 3
Выделение подстроки, ее замена с помощью присвоения свойству TextBox.SelText нового значения, чтение этого свойства до присвоения и после.

Для реализации третьего примера добавим на пользовательскую форму кнопку CommandButton1. Для просмотра положения курсора после замены подстроки передадим фокус текстовому полю, так как после клика он будет на кнопке.

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

Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

Добавить комментарий

Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора. При добавлении в комментарий кода VBA Excel, вставьте перед его началом тег [vb] и по окончании кода - [/vb].