使用多张工作表的标准将项目添加到多个范围的组合框

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