Итак, вот моя цель: мне нужно выполнить разные макросы, зависящие от множественного выбора ListBox.Я начинающий с VBA, и некоторые задачи в настоящее время становятся для меня немного сложнее.есть множественный выбор ListBox с 9 опциями.Если вы выберете опцию «Exfoliación», он выполнит макрос под названием «macro4».Это полностью настраиваемо, поэтому, если я выберу из ListBox параметр «Exfoliación» и «Estanqueidad», он выполнит макросы 4 и 3 (те, что с ними связаны).
Я видел несколько примеровв Интернете, но они о работе ListBox со столбцами, листами и так далее.Но не было много объяснений работы с макросами.
Пользователь выбирает параметры и нажимает кнопку «Отправить» на рабочем листе, которая называется «Botón
».варианты из списка отмечены vector(i)=1
.С помощью цикла for варианты считываются и выполняют соответствующие макросы для этих выборов с массивом a(i)
, который содержит имена этих макросов.
Sub Submit()
'Getting selected items in ListBox1
Dim vector(1 To 11) As Integer
Dim i As Integer
Dim a(1 To 9) As String
'Private Sub CommandButton1_Click()
For i = LBound(a) To UBound(a)
vector(i) = 0
Next i
With Sheets("Botón").ListBox1
Select Case (ListBox1.Text)
Case "Tornillo Resorte": vector(1) = 1
Case "Categoría Manguito": vector(2) = 1
Case "Estanqueidad": vector(3) = 1
Case "Exfoliación": vector(4) = 1
Case "Material vaina": vector(5) = 1
Case "Diseño EC": vector(6) = 1
Case "Curva Q vs Enriquecimiento": vector(7) = 1
Case "Curva Criticidad": vector(8) = 1
Case "Curva de carga t. enfriamiento": vector(9) = 1
Case "Condicioón de transporte": vector(10) = 1
Case "ATI": vector(11) = 1
Case ""
MsgBox "nothing selected"
Case Else
MsgBox Me.ListBox1.Text
End Select
Dim MN As String
For i = 1 To N 'Fill the array
a(i) = "macro" & i
Next
MN = "Módulo5" 'Module where i have the worksheet I'm working with
Dim N As Integer
N = 11
For i = LBound(a) To UBound(a)
If vector(i) = 1 Then
Application.Run MN & "." & a(i)
End If
Next i
End Sub
Я нахожу проблемы с оператором Select Case (ListBox1.Text)
.Он не компилируется и не знает, как вызвать listBox с помощью Select Case.
Заранее благодарен за помощь:)
Редактировать : с помощьюновый кодМетод с выбором:
`Private Sub Command Button1_Click() 'This is a button that opens the multilist with the different options. It works correctly
Worksheets("Botón").ListBox1.Clear
ListBox1.Height=200
ListBox1.Width=250
Dim mylist As Variant
mylist=Array("Tornillo Resorte",...,"Condicioón de transporte")
ListBox1.List=mylist
End Sub
Sub Submit() ''here's the macro with the button assigned to execute the selection. This is where I get the problem.
With Sheets("Botón").ListBox1
MN = "Módulo5" 'Module where i have the worksheet I'm working with
For X = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(X) = True Then
Application.Run MN & "." & .ListIndex + 1
Else
MsgBox "No se ha seleccionado ningún filtro"
End If
Next X
End With
End Sub