Sim, você pode adicionar uma caixa de listagem de formulário e permitir várias seleções. Confira aqui para suporte de MS.
VBA - verifique o este thread do stackoverflow
Eu tenho uma tabela no Excel onde posso selecionar vários itens de uma lista suspensa em uma célula.
Agora, usando minha macro, eu tenho que escolher todas as opções separadamente, e elas são adicionadas a uma célula, uma por uma.
Existe a possibilidade de escrever a macro que adiciona caixas de seleção à lista suspensa, para que eu possa verificar os itens que quero adicionar e eles serão adicionados simultaneamente?
Sim, você pode adicionar uma caixa de listagem de formulário e permitir várias seleções. Confira aqui para suporte de MS.
VBA - verifique o este thread do stackoverflow
Ok, usei este código para o Listbox:
Dim lngItem As Long
Const strSep = ", " 'delimiter
Private Sub UserForm_Initialize()
With ListBox1
.RowSource = "=Sheet1!A2:A12"
For lngItem = 0 To ListBox1.ListCount - 1
.Selected(lngItem) = InStr(1, strSep & ActiveCell.Value & strSep, strSep & .List(lngItem, 0) & strSep)
Next lngItem
End With
End Sub
Private Sub CommandButton1_Click()
Dim strItems As String
With ListBox1
For lngItem = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(lngItem) Then
strItems = strItems & strSep & ListBox1.List(lngItem, 0)
End If
Next lngItem
End With
With ActiveCell
.NumberFormat = "@"
.Value = Replace(strItems, strSep, "", 1, 1)
End With
Unload Me
End Sub
e este para seleção de colunas:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 3 Or Target.Row = 1 Then Exit Sub
UserForm1.Show
Cancel = True
End Sub
Funciona muito bem, mas eu gostaria de mudar uma coisa.
No momento, a caixa de listagem aparece depois de clicar duas vezes na célula. Existe a possibilidade de fazer apenas um clique? Também pode ser alterado para que a caixa de listagem seja sempre mostrada abaixo da célula selecionada?
Tags microsoft-excel macros vba