EXCEL VBA относительно функций и пользовательских форм

Я новичок в программировании Excel VBA, поэтому столкнулся с некоторыми трудностями в своем собственном проекте.

Короче говоря, у меня есть 10 пользовательских форм и 10 текстовых полей в каждой пользовательской форме с одинаковым именем TextBox.

Могу ли я создать функцию, которую я могу вызывать в каждой пользовательской форме, чтобы мне не приходилось вручную кодировать ее для каждой пользовательской формы. Что касается функции, она сбросит значение TextBox, а также вернет его в «начальное» состояние.

Это все, что касается моего вопроса. Любая помощь будет высоко оценена. Заранее спасибо.


person 4 Leave Cover    schedule 19.12.2012    source источник


Ответы (2)


Создайте Sub в Module, который вы вызываете из каждой формы

eg

Sub TextBoxInit(tb As MSForms.TextBox)
    tb.Text = ""
End Sub

Назовите это в каждом UserForm, как вы считаете нужным

eg

Private Sub Userform_Initialize()
    Module1.TextBoxInit TextBox1
End Sub
person chris neilsen    schedule 19.12.2012
comment
Привет Крис, спасибо за ваш быстрый ответ. В основном я хочу TextBox.value = в Userform_Initialize(). Это возможно? - person 4 Leave Cover; 19.12.2012
comment
Действительно очень эффективно использовать этот метод. Большое спасибо, Крис. Очень ценю это. - person 4 Leave Cover; 19.12.2012
comment
Кроме того, если вы хотите инициализировать все текстовые поля в форме, вы можете пройтись по ним: ‹code›Private Sub Userform_Initialize() Dim crtl As MSForms.Control For Each crtl In Me.Controls If TypeName(crtl) = TextBox Then Module1 .TextBoxInit crtl End If Next crtl End Sub‹/code› - person CuberChase; 20.12.2012

Тан,

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

Перейдите сюда: VBA USERFORM: PREVENT COMBOBOX ESCAPE ON KEYDOWN

Или здесь: EXCEL VBA: dblClick, улучшение повторяющегося кода

Основы работы этих модулей классов заключаются в том, что вы создаете свой собственный объект, пишете для него код и назначаете желаемые элементы управления пользовательской формы в качестве этого типа объекта (класса). Например, если бы у вас было 20 текстовых полей, которые работали одинаково (они перезагружали свои собственные значения), вы просто написали бы идентичный код в разделе модуля класса. Бам! Вот и все (вам также придется написать абзац кода для циклического просмотра и назначения текстовых полей, для которых вы хотите использовать эту функциональность).

Это может занять некоторое время, чтобы понять, но это значительно улучшит ваш проект.

person Elias    schedule 22.07.2013