Excel Userform для добавления нескольких строк в рабочую таблицу - зависимый выпадающий список? - PullRequest
0 голосов
/ 28 августа 2018

Мне нужна помощь в пользовательской форме для добавления нескольких строк на листе 1. Это выглядит так (имена элементов управления красным цветом): Форма пользователя с именами элементов управления красным цветом

Вот мой код:

Dim cNum As Integer
Dim X As Integer
Dim nextrow As Range
Dim rRef As String
Dim ctrl As MSForms.Control

Private Sub UserForm_Initialize()
For Each ctrl In Controls
If ctrl.Name Like "*rec4" Then ctrl = Date
If TypeOf ctrl Is MSForms.ComboBox Then
If ctrl.Name Like "*rec1" Then ctrl.List = Array("Company1", "Company2", "Company3")
If ctrl.Name Like "*rec2" Then ctrl.List = Array("Supplier1", "Supplier2", "Supplier3")
If ctrl.Name Like "*rec5" Then ctrl.List = Array("Wrong Order", "Wrong Company", "Wrong Charge","Internal Deletion")
End If
Next
End Sub

Private Sub Arec5_Change()
Select Case Arec5.Value
Case Is = "Wrong Order"
Arec6.List = Array("Linked to other supplier", "Not Valid", "Missing figure")
Case Is = "Wrong Company"
Arec6.List = Array("Company1", "Company2", "Company3")
Case Is = "Wrong Charge"
Arec6.List = Array("Recupel", "Bebat", "Valorlub")
Case Is = "Internal Deletion"
Arec6.List = Array("Already Handled", "Manual Handling", "Request", "Deleted order")
End Select
End Sub

Private Sub btnClear_Click()
Unload Me
UserForm1.Show
End Sub

Private Sub btnClose_Click()
Unload Me
End Sub

Private Sub btnSubmit_Click()
cNum = 7
rRef = "Arec"
Addme
rRef = "Brec"
Addme
rRef = "Crec"
Addme
rRef = "Drec"
Addme
rRef = "Erec"
Addme
rRef = "Frec"
Addme
rRef = "Grec"
Addme
rRef = "Hrec"
Addme
rRef = "Irec"
Addme
rRef = "Jrec"
Addme
rRef = "Lrec"
Addme
rRef = "Mrec"
Addme
rRef = "Nrec"
Addme
rRef = "Orec"
Addme
rRef = "Prec"
Addme
rRef = "Qrec"
Addme
rRef = "Rrec"
Addme
rRef = "Srec"
Addme
End Sub

Sub Addme()
Set nextrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
For X = 1 To cNum
nextrow = Me.Controls(rRef & X).Value
Set nextrow = nextrow.Offset(0, 1)
Next
End Sub

Что я хочу сделать, это:

Примените одно и то же событие изменения (Arec5_Change) ко всему *rec5 комбинированному списку, чтобы каждый *rec6 комбобокс зависел от *rec5 слева.

Как этого добиться?

Далее я также хочу отправить строку на Sheet2, когда в 10101 * найдено * Internal Deletion.

Возможно ли это?

1 Ответ

0 голосов
/ 28 августа 2018

Согласно комментариям - вы заявили, что на данный момент вы жестко закодируете обработчики событий для 19 элементов управления. Однако для дальнейшего использования - и для получения дополнительной информации о VBA - можно создать обработчик событий class для назначения нескольким объектам управления, включая объекты, созданные в пользовательской форме во время выполнения.

Проверьте следующие ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...