VBA TextBox Array с событиями - PullRequest
       20

VBA TextBox Array с событиями

0 голосов
/ 12 апреля 2020

Я пытаюсь создать динамический массив текстовых полей c для обработки любого количества данных, которые пользователь решает ввести. Проблема в том, что теперь мне нужны эти текстовые поля, чтобы иметь обработчик события _Change. Я читал, что вы можете определять элементы управления с событиями следующим образом:

Public WithEvents txt as MSForms.textbox

Но это не позволяет мне определять его как массив. Кто-нибудь знает, как это сделать? Вот мой код:

Public numacc As Integer
Dim NombreAcc() As MSForms.textbox
Dim k() As MSForms.textbox
Dim Cant() As MSForms.textbox

Private Sub CommandButton1_Click()

If numacc = 0 Then

DatosTuberia.Height = DatosTuberia.Height + 18
Errores.Top = Errores.Top + 18
LblNombre.Visible = True
LblK.Visible = True
LblCantidad.Visible = True

End If

DatosTuberia.Height = DatosTuberia.Height + 18
Errores.Top = Errores.Top + 18

ReDim Preserve NombreAcc(numacc), k(numacc), Cant(numacc)

Set NombreAcc(numacc) = DatosTuberia.Controls.Add("Forms.TextBox.1", "Nombre")
Set k(numacc) = DatosTuberia.Controls.Add("Forms.TextBox.1", "k")
Set Cant(numacc) = DatosTuberia.Controls.Add("Forms.TextBox.1", "Cantidad")

With NombreAcc(numacc)

.Top = 262 + numacc * 18
.Left = 14
.Width = 76
.Height = 18
.BorderStyle = fmBorderStyleSingle
.Font.Size = 12

End With

With k(numacc)

.Top = 262 + numacc * 18
.Left = 89.5
.Width = 76
.Height = 18
.BorderStyle = fmBorderStyleSingle
.Font.Size = 12

End With

With Cant(numacc)

.Top = 262 + numacc * 18
.Left = 164
.Width = 76
.Height = 18
.BorderStyle = fmBorderStyleSingle
.Font.Size = 12

End With

numacc = numacc + 1

End Sub
...