gpt4 book ai didi

excel - 获取 Worksheet_change 事件自动执行宏

转载 作者:行者123 更新时间:2023-12-04 20:18:25 25 4
gpt4 key购买 nike

我有一个宏(ApplyFilter),它根据我在另一个工作表(总计)上的单元格 B1 中输入的日期过滤许多工作表。那个宏是:

Sub ApplyFilter() 'Filters all worksheets except worksheet1 for date entered into _
'Grand Totals!B1
Dim WS_Count As Integer
Dim I As Integer
Dim FilterRange As Variant
FilterRange = Range("'Grand Totals'!B1")
' Set WS_Count equal to the number of worksheets in the active
' workbook.
WS_Count = ActiveWorkbook.Worksheets.Count
' Begin the loop.
For I = 2 To WS_Count
Sheets(I).Select
ActiveSheet.AutoFilterMode = False 'Remove any existing filters
Worksheets(I).Range("A2").AutoFilter Field:=1, Criteria1:=Range("'Grand Totals'!B1").Text
Next I
Sheet1.Activate
End Sub

当我手动执行此宏时,它会按应有的方式执行和过滤。但是,当我从另一个子调用这个宏时:
Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("B1")) Is Nothing Then _
Call ApplyFilter
End Sub

我得到一个“宏”窗口,其中提供了可用的宏列表。我可以选择“ApplyFilter”宏并单击“运行”,然后宏会根据需要执行和过滤工作表。

我发现许多关于从子程序中自动执行宏的引用,但没有一个引用“宏”窗口,我现在必须从中选择要运行的宏。相反,当我在“Grand Totals”工作表的单元格 B1 中输入日期并按 Enter 时,sub worksheet_change(ByVal Target As Range) 应自动调用“ApplyFilter”并将日期过滤器应用于许多工作表。

我创建了一个按钮并使用 Button_Click 调用“ApplyFilter”,一切都很好。但是,输入日期然后按 Enter 执行宏似乎更直观。我可以忍受 Button_Click 方法,但我正在尝试首先学习 VBA,而且我只是固执地想要学习如何使它工作,我不想仅仅满足于什么会起作用。

最佳答案

工作表代码必须在 Grand Totals 中床单

  • 右键单击您的Grand Totals工作表标签
  • View Code
  • 确保将下面的代码粘贴到此处
  • 返回 Excel

  • 总计表代码
    Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("B1")) Is Nothing Then Call ApplyFilter
    End Sub

    更高效的过滤器代码
    Sub ApplyFilter()
    Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Sheets
    If ws.Name <> "Grand Totals" Then
    ws.AutoFilterMode = False
    ws.Range("A2").AutoFilter Field:=1, Criteria1:=Range("'Grand Totals'!B1").Text
    End If
    Next
    End Sub

    关于excel - 获取 Worksheet_change 事件自动执行宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15376969/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com