在excel vba中查找所选列。

问题描述 投票:0回答:1
For Each Sheet In ActiveWorkbook.Sheets
        If Sheet.Index <> 1 Then
           Sheet.Activate
           Range("B1").Select
           Call Something
        ElseIf Sheet.Index = 1 Then
           Sheet.Activate
           Range("A1").Select
           Call Something_new
        End If
    Next Sheet

我正在做一个项目,如果我在一个(列)表中过滤一些东西,它就会在每个其他(列)表中同步。 在上面的代码中,我使用的是 "如果" 基于工作表索引的条件。我需要使用基于所选列的条件,类似于这样的条件

if filters are made on Column A Then 
Range("A1").select
Call something
if filters are made on Column B Then
Range("B1").select
Call something_else

我需要一些建议。

excel vba autofilter
1个回答
1
投票

这些基础知识可能正是你所需要的--在一个标准的过滤表上(对我来说是sheet1)。

If Sheet1.AutoFilter.Filters.Item(1).On Then MsgBox ("Filter 1 is on")

项目1将是第一列,A列,你可以像这样测试每一个。

If Sheet1.AutoFilter.Filters.Item(1).On Then MsgBox ("Filter 1 is on")
If Sheet1.AutoFilter.Filters.Item(2).On Then MsgBox ("Filter 2 is on")

等,或者你可以像这样动态地循环测试。

Sub SelectFirstColumnWithFilter
    Dim i As Long
    For i = 1 To Sheet1.AutoFilter.Filters.Count
        If Sheet1.AutoFilter.Filters.Item(i).On Then Cells(1, i).Select: Exit Sub
    Next i
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.