使用多张工作表的标准将项目添加到多个范围的组合框
Add item to combobox from multiple range with criteria from multiple sheets
我在用户窗体上有一个组合框,我需要从固定范围(有条件)中添加值,但我需要它在 4 sheets
中执行此操作
工作表是“WRS P1”、“WRS P2”、“WRS P3”和“WRS P4”
A 列有一个日期范围 (A8:A32)(该范围在范围内的所有单元格中都有一个公式,但实际上只有一些可能填充了一个值)
当 E 列中的单元格为空时,我需要将这些日期添加到 Combobox
A列的日期会先填满WRS P1中的上述范围,当范围填满后,将流向相同范围的WRS P2,然后流向WRS P3,依此类推
我需要一些代码来循环第一个sheet(WRS P1)中的范围,
一旦代码到达 A 列中的空单元格(在范围内),则代码可以停止
我有在 1 sheet 上执行此操作的代码,但我似乎无法让它继续寻找下一个 sheet
这是我目前拥有的代码:
如有任何帮助,我们将不胜感激!
Dim rngEmpD As Range
Dim rngListD As Range
Dim strSelectedD As String
Dim LastRowD As Long
strSelectedD = ""
LastRowD = Worksheets("WRS P1").Range("A8:A32").Find("", , xlValues, , , xlNext, , , False).Row
Set rngListD = Worksheets("WRS P1").Range("E8:E" & LastRowD - 1)
For Each rngEmpD In rngListD
If rngEmpD.Value = strSelectedD Then
Me.ComboBox1.AddItem rngEmpD.Offset(, -3)
End If
Next rngEmpD
试试下面的代码。
我们基本上是将 4 个 sheet 添加到一个数组中,然后循环遍历该数组以获取 sheet 名称。然后我们遍历每个 sheet 中的每一行以将项目添加到组合框。
Dim i As Long, j As Long, arr As Variant
arr = Array("WRS P1", "WRS P2", "WRS P3", "WRS P4")
For i = LBound(arr) To UBound(arr)
With Sheets(arr(i))
For j = 8 To 32
If .Range("B” & j).Value = "" Then Exit For
If .Range("E" & j).Value = "" Then
Me.ComboBox1.AddItem .Range("B" & j).Value
End If
Next j
End With
Next i
请尝试下一个代码:
Sub fillCombo()
Dim LastRow As Long, arrSh, El, arrE, i As Long
arrSh = Split("WRS P1,WRS P2,WRS P3,WRS P4", ",")
For Each El In arrSh
LastRow = Worksheets(El).Range("A8:A32").Find("", , xlValues, , , xlNext, , , False).row
arrE = Worksheets(El).Range("A8:E" & LastRow - 1).Value 'to make the iteration faster
For i = 1 To UBound(arrE)
If arrE(i, 5) = "" Then Me.ComboBox1.AddItem arrE(i, 2)
Next i
Next
End Sub
我在用户窗体上有一个组合框,我需要从固定范围(有条件)中添加值,但我需要它在 4 sheets
中执行此操作工作表是“WRS P1”、“WRS P2”、“WRS P3”和“WRS P4” A 列有一个日期范围 (A8:A32)(该范围在范围内的所有单元格中都有一个公式,但实际上只有一些可能填充了一个值) 当 E 列中的单元格为空时,我需要将这些日期添加到 Combobox A列的日期会先填满WRS P1中的上述范围,当范围填满后,将流向相同范围的WRS P2,然后流向WRS P3,依此类推
我需要一些代码来循环第一个sheet(WRS P1)中的范围, 一旦代码到达 A 列中的空单元格(在范围内),则代码可以停止
我有在 1 sheet 上执行此操作的代码,但我似乎无法让它继续寻找下一个 sheet
这是我目前拥有的代码:
如有任何帮助,我们将不胜感激!
Dim rngEmpD As Range
Dim rngListD As Range
Dim strSelectedD As String
Dim LastRowD As Long
strSelectedD = ""
LastRowD = Worksheets("WRS P1").Range("A8:A32").Find("", , xlValues, , , xlNext, , , False).Row
Set rngListD = Worksheets("WRS P1").Range("E8:E" & LastRowD - 1)
For Each rngEmpD In rngListD
If rngEmpD.Value = strSelectedD Then
Me.ComboBox1.AddItem rngEmpD.Offset(, -3)
End If
Next rngEmpD
试试下面的代码。
我们基本上是将 4 个 sheet 添加到一个数组中,然后循环遍历该数组以获取 sheet 名称。然后我们遍历每个 sheet 中的每一行以将项目添加到组合框。
Dim i As Long, j As Long, arr As Variant
arr = Array("WRS P1", "WRS P2", "WRS P3", "WRS P4")
For i = LBound(arr) To UBound(arr)
With Sheets(arr(i))
For j = 8 To 32
If .Range("B” & j).Value = "" Then Exit For
If .Range("E" & j).Value = "" Then
Me.ComboBox1.AddItem .Range("B" & j).Value
End If
Next j
End With
Next i
请尝试下一个代码:
Sub fillCombo()
Dim LastRow As Long, arrSh, El, arrE, i As Long
arrSh = Split("WRS P1,WRS P2,WRS P3,WRS P4", ",")
For Each El In arrSh
LastRow = Worksheets(El).Range("A8:A32").Find("", , xlValues, , , xlNext, , , False).row
arrE = Worksheets(El).Range("A8:E" & LastRow - 1).Value 'to make the iteration faster
For i = 1 To UBound(arrE)
If arrE(i, 5) = "" Then Me.ComboBox1.AddItem arrE(i, 2)
Next i
Next
End Sub