【问题标题】:Excel-VBA: Get Value of a Visible Cell in a Table after applying Filter?Excel-VBA:应用过滤器后获取表格中可见单元格的值?
【发布时间】:2019-04-07 14:56:21
【问题描述】:

我正在尝试以一种简单的方式获取表格中的第一个可见单元格(也称为)ListObject

到目前为止的代码:

Sub StatusFilter()

Set WB = ThisWorkbook
Set iFace = WB.Sheets("Interface")
Set DataS = WB.Sheets("Data")

iCriteria = iFace.Range("Q22").Value
DataS.Activate
ActiveSheet.ListObjects("Data").Range.AutoFilter 14, iCriteria

ActiveSheet.ListObjects("Data").DataBodyRange.Select

With Columns("A")
    .Find(what:="*", after:=.Cells(1, 1), LookIn:=xlValues).Activate
End With
DValue = ActiveCell.Value

If DValue = "" Then
    MsgBox "Lucky! No Tickets are in this Criteria!!", vbInformation, "Technology Issue Tracker"
    Exit Sub
End If

End Sub

【问题讨论】:

  • 可见单元格是什么意思?

标签: excel vba autofilter listobject


【解决方案1】:

使用您的代码,您应该初始化变量。

这样的东西应该可以工作(推论 - 这是未经测试的)

Sub StatusFilter()

    Dim WB As Workbook: Set WB = ThisWorkbook
    Dim iFace As Worksheet: Set iFace = WB.Sheets("Interface")
    Dim DataS As Worksheet: Set DataS = WB.Sheets("Data")

    Dim iCriteria As String: iCriteria = iFace.Range("Q22")
    Dim DValue As String

    With DataS.ListObjects("Data").Range
        .AutoFilter 14, iCriteria
        DValue = Index(.SpecialCells(xlCellTypeVisible), 1).Value
    End With

    If DValue = "" Then
        MsgBox "Lucky! No Tickets are in this Criteria!!", vbInformation, "Technology Issue Tracker"
        Exit Sub
    End If

End Sub

【讨论】:

  • 感谢您的回答@Tragamor。如果我没记错的话,DValue 通过 Index 函数获取值。我说的对吗?
  • 索引函数应该返回范围内的第一个单元格; Index(range, position) 所以它应该是第一个可见的单元格
  • 所以,这将返回 1 的 Header,对吗?如果是这样的话,我们谁能得到 Visible cel Index?
【解决方案2】:
Function getFirstVisibleCellInTable(tblName As String) As Range

Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects(tblName)

For i = 1 To tbl.ListRows.Count
    If False = tbl.ListRows(i).Range.EntireRow.Hidden Then
        Set getFirstVisibleCellInTable = tbl.DataBodyRange(i, 1)
        Exit Function
    End If
Next i

getFirstVisibleCellInTable = Nothing

End Function

像这样使用它:

getFirstVisibleCellInTable("Data")

仅检索值:

    getFirstVisibleCellInTable("Data").Value

仅检索地址:

getFirstVisibleCellInTable("Data").Address

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    相关资源
    最近更新 更多