If UserForm1.ComboBox1.Value = "One" Then
If UserForm1.ComboBox2.Value = "Attentive" Then
For Each listItem In ws.Range("D1:D56").SpecialCells(xlConstants)
With Me.ListBox1
If listItem = "Y" Then .AddItem Sheets("Sheet2").Range("A" & listItem.Row).Value
End With
Next listItem
End If
范围A具有名称。范围C具有“一”,“二”和“三”形式的值。范围D是注意的,其具有“Y”和“N”形式的值。
这个程序正在做的是: 检查范围D1:D56在范围C中具有“一个”值,然后在列表框中打印其中包含“Y”的列A的名称。
现在我想添加另一个带有“One”的条目,我现在必须将范围更改为D57,我不想重复此操作,应该自行考虑,而不是手动更改代码。< / p>
如何做到这一点?
答案 0 :(得分:1)
我知道您只想制作检查值动态的范围。因为特殊单元格使用usedrange,所以你可以使用:
For Each listItem In ws.Columns(4).SpecialCells(xlConstants)
或者您可以使用:
For Each listItem In ws.Range("D1", ws.cells(rows.count,"D").end(xlup)).SpecialCells(xlConstants)
根据您的评论,这里有一个更新的答案:
Dim rCell As Range
Dim sValue As String '// Represents your One, Two, Three values
Dim sAttentive As String '// Represents your attentive value
sValue = UserForm1.ComboBox1.Value
If UserForm1.ComboBox2.Value = "Attentive" Then
sAttentive = "Y"
Else
sAttentive = "N"
End If
For Each rCell In ws.Columns(4).SpecialCells(xlConstants)
If rCell.Value = sAttentive And rCell.Offset(, -1) = sValue Then
Me.ListBox1.AddItem Sheets("Sheet2").Range("A" & listItem.Row).Value
End If
Next rCell