2016-06-07 1 views
0

Я использовал следующий код для выбора текста внутри текстового поля пользовательской формы каждый раз, когда я нажимал на него, однако у меня почти 40 текстовых полей, и я хотел бы знать, есть ли способ написать один код для всех, вместо того, чтобы копировать и вставлять эту же часть кода в 40 раз.Выберите текст внутри текстового поля в VBA UserForm

Private Sub textbox1_MouseDown(ByVal Button As Integer, _ 
ByVal Shift As Integer,ByVal X As Single, ByVal y As Single) 

With Me.textbox1 
    .SelStart = 0 
    .SelLength = Len(.Text) 
End With 

End Sub 
+0

Создать класс пользователя, который инкапсулирует текстовое поле. Тогда ваш основной код просто создаст объект (ваш новый класс), который создает текстовое поле, и выберет ваш текст по мере необходимости. – PeterT

+0

Спасибо, Питер. Я довольно новичок в vba/userforms, и я не понимаю, как создать пользовательский класс. – pmv

+0

. Это сообщение может помочь вам: [присваивать код-к-кнопке-создан-динамически] (http: // stackoverflow. com/questions/10224511/assign-code-to-a-button-created-dynamic) – Kellsens

ответ

0

Есть способы написать один экземпляр, который будет запускаться для них всех.

Вам нужно будет добавить строку кода для события MouseDown для каждого текстового поля, которое вызовет один экземпляр кода.

Например: -

Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) 
SelectText 
End Sub 

Затем создайте процедуру, которая работает на ActiveControl: -

Private Sub SelectText() 
With ActiveControl 
    .SelStart = 0 
    .SelLength = Len(.Text) 
End With 
End Sub 
+0

Спасибо, Гарри, но что, если текстовые файлы не имеют общего имени? Я не могу изменить их как этот пункт, так как они называются такими же, как мои столбцы в электронной таблице, и я использую эту логику для другой части кода. – pmv

+0

@pmv Я изменил ответ, так как только ваши текстовые поля будут вызывать общую процедуру ('SelectText' в примере), тогда нам не нужно беспокоиться о какой-либо форме проверки типа управления. –

Смежные вопросы