如何根据 Excel - VBA 用户表单中的另一个列表框选择动态地获取列表框内容?
How to have List Box contents dynamically depending on another List Box Selection in Excel - VBA user forms?
我有主要数据(非静态数据可能会在其他 运行 时间模块期间发生变化)
在一列中,然后我有主列的每个元素的列。
假设 A 是主要的,那么如果 A 有 3 个元素,那么列 B 、 C 和 D 将是具有各种数据行的辅助列。
在用户表单中,我有两个列表框 1 和 2。如果用户在 ListBox1 中选择第二个元素,ListBox2 将显示 "C" 列的内容。
Private Sub ListBox1_Click()
Dim X As Integer
Dim vCol As Variant
Dim srange As Range
Dim ssheeet As Worksheet
Set ssheeet = ThisWorkbook.Sheets("Sheet2")
X = ListBox1.ListIndex
Me.ListBox1.List = ssheeet.Columns(X + 1).Values*
'2nd selection i.e., 2+1 gives 3rd -> "C" column
End Sub
Private Sub UserForm_Initialize()
Dim ssheeet As Worksheet
Set ssheeet = ThisWorkbook.Sheets("Sheet1")
Me.ListBox1.RowSource = "Sheet1!A:A"
End Sub
查询 ?
Me.ListBox1.List = ssheeet.Columns(X + 1).Values
在我必须为第二个列表框提供动态范围的地方不起作用。
谢谢!
这应该有效:
Private Sub ListBox1_Click()
Dim X As Integer
Dim vCol As Variant
Dim srange As Range
Dim ssheeet As Worksheet
Set ssheeet = ThisWorkbook.Sheets("Sheet2")
X = ListBox1.ListIndex
Me.ListBox2.RowSource = ssheeet.Columns(X + 1).Address
End Sub
只能将一个数组压入List属性,所以就
Private Sub ListBox1_Click()
Dim X As Integer
Dim vCol As Variant
Dim srange As Range
Dim ssheeet As Worksheet
Set ssheeet = ThisWorkbook.Sheets("Sheet2")
X = ListBox1.ListIndex
Dim myArray() as variant
myArray = ssheeet.Columns(X + 1).Values
Me.ListBox2.List = myArray
End Sub
我已经测试了这个方法,它将包括 Blank
在内的所有值都推送到 ListBox2 中。不太好,除非我们先确定数据范围。
我有主要数据(非静态数据可能会在其他 运行 时间模块期间发生变化) 在一列中,然后我有主列的每个元素的列。
假设 A 是主要的,那么如果 A 有 3 个元素,那么列 B 、 C 和 D 将是具有各种数据行的辅助列。
在用户表单中,我有两个列表框 1 和 2。如果用户在 ListBox1 中选择第二个元素,ListBox2 将显示 "C" 列的内容。
Private Sub ListBox1_Click()
Dim X As Integer
Dim vCol As Variant
Dim srange As Range
Dim ssheeet As Worksheet
Set ssheeet = ThisWorkbook.Sheets("Sheet2")
X = ListBox1.ListIndex
Me.ListBox1.List = ssheeet.Columns(X + 1).Values*
'2nd selection i.e., 2+1 gives 3rd -> "C" column
End Sub
Private Sub UserForm_Initialize()
Dim ssheeet As Worksheet
Set ssheeet = ThisWorkbook.Sheets("Sheet1")
Me.ListBox1.RowSource = "Sheet1!A:A"
End Sub
查询 ?
Me.ListBox1.List = ssheeet.Columns(X + 1).Values
在我必须为第二个列表框提供动态范围的地方不起作用。
谢谢!
这应该有效:
Private Sub ListBox1_Click()
Dim X As Integer
Dim vCol As Variant
Dim srange As Range
Dim ssheeet As Worksheet
Set ssheeet = ThisWorkbook.Sheets("Sheet2")
X = ListBox1.ListIndex
Me.ListBox2.RowSource = ssheeet.Columns(X + 1).Address
End Sub
只能将一个数组压入List属性,所以就
Private Sub ListBox1_Click()
Dim X As Integer
Dim vCol As Variant
Dim srange As Range
Dim ssheeet As Worksheet
Set ssheeet = ThisWorkbook.Sheets("Sheet2")
X = ListBox1.ListIndex
Dim myArray() as variant
myArray = ssheeet.Columns(X + 1).Values
Me.ListBox2.List = myArray
End Sub
我已经测试了这个方法,它将包括 Blank
在内的所有值都推送到 ListBox2 中。不太好,除非我们先确定数据范围。