【问题标题】:Handle visible cells in vba处理 vba 中的可见单元格
【发布时间】:2023-04-07 23:16:01
【问题描述】:

我有一个名为“Abschluss”的工作表。在这个工作表中,我使用过滤器来获取我想用我的 vba 脚本处理的数据范围。所以我只想处理可见行。 我的 vba 脚本看起来像

For Each i In Worksheets("Abschluss").SpecialCells(xlCellTypeVisible).Rows
    If (WorksheetFunction.CountIf(Range("B2:B" & i), Cells(i, 2)) = 1) Then _
        Umsetzung_Kapitel_1.AddItem Cells(i, 2)
Next

这不起作用,我收到运行时错误 438。你知道问题出在哪里吗? 我假设Worksheets("Abschluss").SpecialCells(xlCellTypeVisible).Rows 返回了错误的数据类型,但我无法修复它。

【问题讨论】:

  • 尝试将 i 声明为 long,然后执行 For i = 1 to Worksheets("Abschluss").SpecialCells(xlCellTypeVisible).Rows.Count
  • 恐怕这不是解决方案。问题是,当我过滤一些数据时,我得到例如行号 2,5,200 和 202。所以Worksheets("Abschluss").SpecialCells(xlCellTypeVisible).Rows.Count 将返回4,for 循环将通过行号 1 到 4,但是它应该经过 2,5,200 和 202。这就是我使用 for-each 循环的原因。

标签: vba excel


【解决方案1】:

您似乎正在尝试用独特的项目填充组合框或列表框,可能在用户窗体中?

试试这个

Private Sub UserForm_Initialize()
    Dim cUnique As Collection
    Dim Rng As Range
    Dim Cell As Range
    Dim sh As Worksheet
    Dim vNum As Variant

    Set sh = ThisWorkbook.Sheets("Abschluss")
    Rws = sh.Cells(Rows.Count, "B").End(xlUp).Row
    Set Rng = sh.Range(sh.Cells(2, 2), sh.Cells(Rws, 2)).SpecialCells(xlCellTypeVisible)

    Set cUnique = New Collection

    On Error Resume Next
    For Each Cell In Rng.Cells
        cUnique.Add Cell.Value, CStr(Cell.Value)
    Next Cell
    On Error GoTo 0

    For Each vNum In cUnique
        ComboBox1.AddItem vNum
    Next vNum


End Sub

【讨论】:

  • 完美。非常感谢。效果很好! ps:是的,我试图填充一个组合框:-)
【解决方案2】:

改成

Dim i As Long
Dim colCount As Long: colCount = Worksheets("Abschluss").SpecialCells(xlCellTypeVisible).Rows.Count
For i = 1 to colCount
....

【讨论】:

  • 我相信您需要在其中添加一个范围。类似于Worksheets("Abschluss").Range("A:P").SpecialCells..。 (假设数据跨越 A:P 列)。我也会考虑从 2 开始 i 以防有需要考虑的标题。
  • 恐怕这不是解决方案。问题是,当我过滤一些数据时,我得到例如行号 2,5,200 和 202。所以Worksheets("Abschluss").SpecialCells(xlCellTypeVisible).Rows.Count 将返回4,for 循环将通过行号 1 到 4,但是它应该经过 2,5,200 和 202。这就是我使用 for-each 循环的原因。
猜你喜欢
  • 1970-01-01
  • 2012-12-19
  • 1970-01-01
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多