Tenho um Userform (Userform1) que tem 4 listboxes (ListBox1 a 4) que têm todas entradas. O usuário do formulário seleciona a entrada na lista e, em seguida, pressiona um CommandButton (CommandButton_1). A macro VBA então grava o valor de cada Listbox em células em uma planilha de log do Excel. O código para preencher os listboxes com itens e gravar os resultados na planilha está funcionando.
No entanto, eu gostaria de poder verificar para garantir que todas as caixas de listagem tenham uma seleção. Elas devem sempre ser preenchidas antes de gravar os dados, ou então perderemos a integridade dos dados durante a análise posterior.
Descobri como verificar se uma caixa de listagem individual não tem seleção, mas gostaria de generalizar para poder contabilizar qualquer número de caixas de listagem. Até agora, tentei:
'Attempt 1
For Each Control In Me.Controls
If Controls.Name Like "Listbox*" Then
If Controls.Value <> "" Then
Else: MsgBox ("You must select a value for every list.")
GoTo ERROR_ENDSUB
End If
End If
Next
A1 me deu o erro 438: Obect não suporta esta propriedade ou método (se linha Controls.Name).
'Attempt 2
Dim sh as Worksheet
Set sh = ThisWorkbook.Sheets("Downtime")
For i = 1 To 4
If "sh.listbox" & i & ".value" <> "" Then
Else: MsgBox ("You must select a value for every list.")
GoTo ERROR_ENDSUB
End If
Next
A2 simplesmente não funciona, posso deixar as listas vazias e ele ainda grava dados sem Msgbox.
'Attempt 3
Dim LB as ListBox
For i = 1 To 4
Set LB = ListBoxes("Listbox" & i)
If LB.Value <> "" Then
Else: MsgBox ("You must select a value for every list.")
GoTo ERROR_ENDSUB
End If
Next
A3 apresentou um erro de compilação: Sub ou função não definida (Listboxes() destacadas).
Por favor, me perdoe se eu não estiver 100% familiarizado com o modelo de objeto VBA de funções/métodos. Sou um engenheiro químico que tem a reputação de ser bom em Excel (o lado das fórmulas das coisas), e minha empresa tem me dado tarefas de automação de planilhas cada vez maiores. Eventualmente, elas ficaram muito grandes, e agora estou tentando há uma semana ou mais aprender VBA sem nenhuma experiência anterior em codificação.