0

У меня есть сложная проблема с моим VBA-кодом. Ситуация в том, что у меня есть ручная созданная пользовательская форма. Я добавляю элементы управления в пользовательскую форму с помощью макроса, и он отлично работает для меня. Но теперь мне также нужно добавить event-код в пользовательскую форму. Следуя коду, я хочу добавить .CodeModule.InsertLines. Важная часть состоит в том, что текстовые поля, которые я хочу вызвать, должны работать по-разному, но это не работает, какие-либо идеи, как это исправить? (Textboxes названы так: textbox_0, TextBox_1 и после)Excel VBA add code userform программно

Dim iMaxColumns As Integer 
Dim iCount As Integer 

iMaxColumns = Tabelle4.Cells(8, 2).Value 
Dim vArray(0 To iMaxColumns - 1) As String 


For iCount = 0 To iMaxColumns - 1 
    vArray(iCount) = textbox_ & iCount &.Value 
Next 

'do sth. with the arrray 

Я предполагаю, что проблема заключается в том, что я не могу добавлять переменные в мой объект текстового поля. Я также мог бы работать с полным путем в моем текстовом поле, называя его .Designer.Controls("textbox_" & iCount & ""), но это куча кода, и я надеюсь избежать этого.

+0

Код, который вы опубликовали, не связан с проблемой, которую вы описываете. Вы спрашиваете, как написать этот код в код формы? – RubberDuck

+0

@RubberDuck: Нет, я знаю, как написать код в код формы. Мне нужно вызвать переменную textboxes. Но это объекты. Так что мне нужно выяснить, как вызвать объекты на имя variabel;) – Exic

+0

Можете ли вы привести пример кода, который вы хотите записать в код? Я думаю, что могу помочь, но не совсем понимаю, что вы пытаетесь выполнить. – RubberDuck

ответ

0

Я выяснил довольно простой способ решить мою проблему. Я написал весь необходимый код в отдельном модуле. Там я могу обратиться ко всем переменным и информации, которые мне нужны. После этого при создании UserForm я просто копирую весь код в блок кода UserForms.

Public Function edit_userform(strUserForm As String, _ 
strUserFormEvents As String) 
    Dim VBProj As VBIDE.VBProject 
    Dim VBComp As VBIDE.VBComponent 
    Dim VBComp_Event As VBIDE.VBComponent 
    Dim strCode As String 

    Set VBProj = ActiveWorkbook.VBProject 
    Set VBComp = VBProj.VBComponents(strUserForm) 
    Set VBComp_Event = VBProj.VBComponents(strUserFormEvents) 

    With VBComp_Event.CodeModule 
     strCode = .Lines(1, .CountOfLines) 
    End With 

    VBComp.CodeModule.AddFromString strCode 
End Function