在 sheet 打开之前,列表框无法获取数据
List Box unable to fetch data until that sheet is open
Private Sub ListBox1_Click()
Dim X As Integer
Dim ssheeet As Worksheet
Set ssheeet = ThisWorkbook.Sheets("Sheet2")
X = ListBox1.ListIndex
ListBox2.RowSource = ssheeet.Columns((X + 1) + 4).Address
End Sub
所以在我不打开 sheet2 之前,listbox2 无法根据要求从 sheet2.But 获取数据,用户需要在其他 sheet 上。
虽然相同用户窗体的列表框 1 通过从相同的 Sheet2 中获取列表运行良好。通过以下代码,
Private Sub UserForm_Initialize()
Dim ssheeet As Worksheet
Set ssheeet = ThisWorkbook.Sheets("Sheet2")
Me.ListBox1.RowSource = "Sheet2!C:C"
Range.Address(External:=True)
将 return 成为完全合格的参考。
ListBox2.RowSource = ssheeet.Columns((X + 1) + 4).Address(External:=True)
使用 Application.Intersect
您可以轻松地 trim Range
仅包括列的已用部分。
Dim Target As Range
With ThisWorkbook.Sheets("Sheet2")
Set Target = Intersect(.Columns((x + 1) + 4), .UsedRange)
If Not Target Is Nothing Then
ListBox2.RowSource = Target.Address(External:=True)
End If
End With
或者您可以像下面这样设置列表 属性...
Private Sub ListBox1_Click()
Dim Target As Range
Dim X As Integer
Dim ssheeet As Worksheet
Set ssheeet = ThisWorkbook.Sheets("Sheet2")
X = ListBox1.ListIndex
With ThisWorkbook.Sheets("Sheet2")
Set Target = Intersect(.Columns((X + 1) + 4), .UsedRange)
If Not Target Is Nothing Then
ListBox2.List = Target.Value
End If
End With
End Sub
Private Sub ListBox1_Click()
Dim X As Integer
Dim ssheeet As Worksheet
Set ssheeet = ThisWorkbook.Sheets("Sheet2")
X = ListBox1.ListIndex
ListBox2.RowSource = ssheeet.Columns((X + 1) + 4).Address
End Sub
所以在我不打开 sheet2 之前,listbox2 无法根据要求从 sheet2.But 获取数据,用户需要在其他 sheet 上。
虽然相同用户窗体的列表框 1 通过从相同的 Sheet2 中获取列表运行良好。通过以下代码,
Private Sub UserForm_Initialize()
Dim ssheeet As Worksheet
Set ssheeet = ThisWorkbook.Sheets("Sheet2")
Me.ListBox1.RowSource = "Sheet2!C:C"
Range.Address(External:=True)
将 return 成为完全合格的参考。
ListBox2.RowSource = ssheeet.Columns((X + 1) + 4).Address(External:=True)
使用 Application.Intersect
您可以轻松地 trim Range
仅包括列的已用部分。
Dim Target As Range
With ThisWorkbook.Sheets("Sheet2")
Set Target = Intersect(.Columns((x + 1) + 4), .UsedRange)
If Not Target Is Nothing Then
ListBox2.RowSource = Target.Address(External:=True)
End If
End With
或者您可以像下面这样设置列表 属性...
Private Sub ListBox1_Click()
Dim Target As Range
Dim X As Integer
Dim ssheeet As Worksheet
Set ssheeet = ThisWorkbook.Sheets("Sheet2")
X = ListBox1.ListIndex
With ThisWorkbook.Sheets("Sheet2")
Set Target = Intersect(.Columns((X + 1) + 4), .UsedRange)
If Not Target Is Nothing Then
ListBox2.List = Target.Value
End If
End With
End Sub