选择过滤列标题正下方的第一个可见单元格

Tod*_*odd 6 excel vba

我正在尝试选择过滤列标题正下方的第一个可见单元格。我得到的代码如下,但我对这段代码有问题。首先,第一行代码使用文件的当前活动范围。这个文件很可能会改变,这个范围也不会相同。我怎样才能使它适用于我将使用它的任何文件?其次,如果我使用具有相同列格式的完全不同的文件,则列 J 下的第一个可见单元格可能是 J210。我怎样才能使这适用于任何变量数组?

Sub Macro16()
'
' Macro16 Macro
'

'
    ActiveSheet.Range("$A$1:$R$58418").AutoFilter Field:=12, Criteria1:= _
        "Sheets"
    Range("J2").Select
    ActiveCell.FormulaR1C1 = "=RIGHT(RC[1],3)"
    Selection.FillDown
End Sub
Run Code Online (Sandbox Code Playgroud)

Ori*_*yer 6

Sub FirstVisibleCell()
    With Worksheets("You Sheet Name").AutoFilter.Range
       Range("A" & .Offset(1, 0).SpecialCells(xlCellTypeVisible)(1).Row).Select
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码片段可能会解决问题,但 [包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而那些人可能不知道您提出代码建议的原因。 (4认同)

Ror*_*ory 5

未经测试但:

Sub Macro16()

    With ActiveSheet.Range("A1").CurrentRegion
        .AutoFilter field:=12, Criteria1:="Sheets"
        If .Columns(1).SpecialCells(xlCellTypeVisible).count > 1 Then
            With .Columns(10)
                .Resize(.rows.count - 1).offset(1).SpecialCells(xlCellTypeVisible).FormulaR1C1 = "=RIGHT(RC[1],3)"
            End With
        End If
    End With

End Sub
Run Code Online (Sandbox Code Playgroud)