如何显示多选列表框中的值

时间:2014-01-11 01:05:43

标签: vba excel-vba listbox excel

我在Excel宏中有一个表单。此表单将捕获插入到Sheet2中的文本框,列表框和存储中的值。

表单applet中有2个名为“Next”和“Previous”的按钮。这些按钮将用于在保存的记录之间导航。我能够在记录之间导航,并且值在文本框中显示正常。但是,我不知道如何显示列表框中的值。我的列表框是一个多选列表框。

我提供了关于如何在sheet2中保存记录以及单击Next按钮时导航如何发生的代码片段。

     Private Sub Save_Click()

      Dim ctl As Control
      Dim S As String
      Dim i As Integer


      RowCount = Worksheets("Sheet2").Range("A1").CurrentRegion.Rows.Count
     With Worksheets("Sheet2").Range("A1")
    .Offset(RowCount, 0).Value = Me.Name1.Value  ' capture value from list box

     'below code is for capturing value from multiselect listbox 
     With AOI
      For i = 0 To .ListCount - 1
         If .Selected(i) = True Then S = S & ", " & .List(i)
     Next i
      Range("A1").Offset(RowCount, 10).Value = S
     End With
    End Sub

以下代码用于在已保存的记录之间导航..

   Private Sub Next1_Click()

      strCurrentSetofRows = Worksheets("Sheet2").Range("A1").CurrentRegion.Rows.Count
      i = i + 1: j = 0

      If i > (strCurrentSetofRows - 1) Then
        MsgBox "No More Records"
      Exit Sub
      End If

      Set sRange = Worksheets("Sheet2").Range("A1")

      Name1.Text = sRange.Offset(i, j).Value: j = j + 1
   End Sub

有关如何显示AOI(我的字段)的已保存值的任何想法。

1 个答案:

答案 0 :(得分:1)

由于您使用,作为分隔符存储值,因此您可以使用相同的值来拆分值并将其上传到ListBox。顺便说一句,我希望您使用ListBox 初始化 事件中的完整列表生成UserForm's

这是一个非常基本的例子。请根据您的需要进行修改。

我们说单元格A1Blah1,Blah2,Blah6。然后试试这段代码

Option Explicit

Dim i As Long, j As Long

Private Sub UserForm_Initialize()
    ListBox1.MultiSelect = fmMultiSelectMulti

    For i = 1 To 10
        ListBox1.AddItem "Blah" & i
    Next
End Sub

Private Sub CommandButton1_Click()
    Dim ArValues As Variant
    Dim sValue As String
    Dim multivalues As Boolean

    If InStr(1, Range("A1").Value, ",") Then
        ArValues = Split(Range("A1").Value, ",")
        multivalues = True
    Else
        sValue = Range("A1").Value
        multivalues = False
    End If

    If multivalues = True Then
        For i = 0 To UBound(ArValues)
            For j = 0 To ListBox1.ListCount - 1
                If ListBox1.List(j) = ArValues(i) Then
                    ListBox1.Selected(j) = True
                    Exit For
                End If
            Next j
        Next i
    Else
        For j = 0 To ListBox1.ListCount - 1
            If ListBox1.List(j) = sValue Then
                ListBox1.Selected(j) = True
                Exit For
            End If
        Next j
    End If
End Sub

<强>截图

enter image description here