Userform应仅返回筛选的行



我使用了两个列表框来过滤记录,但我很难弄清楚如何只返回过滤后的记录。我可以看到我的过滤正在电子表格上工作。LastRow返回整个数据库;表单会填充整个数据库中的文本框。如果列表框中有一个选择,则我只想要经过筛选的记录。

Private Sub FillTextBoxes()
'Fill the textbox from the column specified by the Tag property

Dim Ctl As Control

If lstFilter.ListCount > 0 Then
Me.RowNo = 2
End If
For Each Ctl In Me.Controls
If Ctl.Tag <> "" _
And Ctl.Tag <> "O" _
And Ctl.Tag <> "P" _
And Ctl.Tag <> "Q" Then
Ctl.Value = Sheet1.Cells(RowNo.Value, Ctl.Tag).Value

End If
Next
End Sub

您可以将可见单元格读取到数组中,并使用该数组填充控件。

Sub test()

Dim vaValues As Variant

vaValues = Sheet1.UsedRange.Offset(1).SpecialCells(xlCellTypeVisible).Value

If True Then 'ctl.tag <> "" etc.
ctl.Value = vaValues(1, 1)
End If


End Sub

我使用的UsedRange减去了标头,但您可能可以更精确地定义您的范围。您需要更改标记(数组不使用列字母(或将其转换为列编号。您可以使用Asc((函数来完成此操作。

asc("C") - asc("A") + 1

返回3。

最新更新