O Listbox pode conter múltiplas colunas de dados.
Usaremos a propriedade .ColumnWidths para configurar a largura individual das colunas.
Configurar como largura zero,ocultará a coluna que não desejamos que apareça.
Neste exemplo abaixo o listbox mostrará o nome completo do estado, sendo que a segunda coluna ficará oculta contendo as abreviações dos estados. O usuário visualizará e escolherá o seu estados, mas o resultado final no documento será a abreviação do estado.
Segue o código:
Option ExplicitPrivate Sub UserForm_Initialize()Dim arrStateName() As StringDim arrStateAbbv() As StringDim i As Long
Use a função Split para retornar um array unidimensional.
Let arrStateName = Split("Select State|Alabama|Alaska|Arizona|" _
& "Arkansas|California|Connecticut|Etc.", "|")
Let arrStateAbbv = Split(" |AL|AK|AZ|AR|CA|CT|Etc", "|")
'Use a propriedade .ColumnWidth para ajustar a largura das colunas. O 0 as esconde.
Let ListBox1.ColumnWidths = "60;0"
For i = 0 To UBound(arrStateName)
' Use o método .AddItem para adicionar multicolunas em cada linha da matriz.
ListBox1.AddItem
'Use o método .List para registrar os dados nas linhas e colunas específicas.
Let ListBox1.List(i, 0) = arrStateName(i)
Let ListBox1.List(i, 1) = arrStateAbbv(i)
Next i
lbl_Exit:
Exit Sub
End Sub
Private Sub CommandButton1_Click()
Dim oRng As Word.Range
Dim oBM As Bookmarks
Set oBM = ActiveDocument.Bookmarks
Set oRng = oBM("Address").Range
Let oRng.Text = TextBox1.Text
oBM.Add "Address", oRng
Set oRng = oBM("City").Range
Let oRng.Text = TextBox2.Text
oBM.Add "City", oRng
Set oRng = oBM("State").Range
'Use the listbox hidden column data. Note columns are indexed starting with 0.
Let oRng.Text = ListBox1.Column(1)
oBM.Add "State", oRng
Set oRng = oBM("Zip").Range
Let oRng.Text = TextBox3.Text
oBM.Add "Zip", oRng
Me.Hide
Set oRng = Nothing
Set oBM = Nothing
lbl_Exit:
Exit SubEnd Sub
Deixe os seus comentários! Envie este artigo, divulgue este link na sua rede social...
Tags: VBA, Excel, Listbox, userform, populate popular, multi-column, multi-colunas,