我在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(我的字段)的已保存值的任何想法。
答案 0 :(得分:1)
由于您使用,
作为分隔符存储值,因此您可以使用相同的值来拆分值并将其上传到ListBox
。顺便说一句,我希望您使用ListBox
初始化 事件中的完整列表生成UserForm's
?
这是一个非常基本的例子。请根据您的需要进行修改。
我们说单元格A1
有Blah1,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
<强>截图强>