продолжить это обсуждение в чате

я есть следующий код:

Sub TEST_____________Data_Validation_Machine()

Application.ScreenUpdating = False

Dim ws As Worksheet
Dim ws2 As Worksheet
Dim Range1 As Range, Range2 As Range
Dim c As Range
Dim Array_Fab As Variant
Dim Array_Paint As Variant
Dim Array_Sub As Variant
Dim Array_Asy As Variant
Dim Array_Facilities As Variant
Dim Array_Machine_List_Choices As Variant

Set ws = ThisWorkbook.Worksheets("EOS Report")
Set ws2 = ThisWorkbook.Worksheets("MachineList")
Set ws3 = ThisWorkbook.Worksheets("PlantAreaList")

    With ws2
        'creating arrays based on the named ranges on the sheet "MachineList"
        Array_Fab = Application.Transpose(.Range("MACHINESFAB"))
        Array_Paint = Application.Transpose(.Range("MACHINESPAINT"))
        Array_Sub = Application.Transpose(.Range("MACHINESSUB"))
        Array_Asy = Application.Transpose(.Range("MACHINESASY"))
        Array_Facilities = Application.Transpose(.Range("MACHINESFACILITIES"))
    End With

        'Array of Arrays
        Array_Machine_List_Choices = Array(Array_Fab, Array_Paint, Array_Sub, Array_Asy, Array_Facilities)

    With ws3
        'creating an array based on the named range on the sheet "PlantAreaList"
        Array_Plant_Area_Choices = Application.Transpose(.Range("PlantAreaListCells"))
    End With

'Cell below "MACHINE" based on the activecell selection of the "Plant Area" combobox:
Set Range1 = ActiveCell.Offset(0, 1)

'Cell below "PLANT AREA", based on the user selection of the combobox:
Set Range3 = ActiveCell

Для этой следующей части, как бы я кодировал: если range3 = Array_Plant_Area_Choices, то range2 = соответствующий Array_Machine_List_Choices

    If Range3 = "" Then

        Set Range2 = ""

            For Each c In Range1
                If c.Interior.Pattern <> xlNone Then
                Else
                    With c.Validation
                        .Delete
                        .Add Type:=xlValidateList, _
                            Formula1:="='" & ws2.Name & "'!" & Range2.Address
                        .IgnoreBlank = True
                        .InCellDropdown = True
                    End With
                End If
             Next

Application.ScreenUpdating = True
End Sub

Этот код создает окно проверки данных, в котором варианты выбора основаны на предыдущем окне проверки данных, которое пользователь уже заполнил. В настоящее время есть несколько операторов if для каждого первоначального выбора, но я добавлю еще тонну, и это может замедлить программу, а также просто выглядеть грязно. Я надеюсь, что смогу использовать массивы, чтобы сделать этот процесс намного чище.

Любая помощь приветствуется! Заранее спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос