删除工作表/图表事件 VBA

2023-12-06

我试图在删除工作表(Excel)时触发宏。 自 2010 年以来,出现了不同的删除事件:

应用程序级别:Application.SheetBeforeDelete 事件。

工作簿级别:Workbook.SheetBeforeDelete 事件。

工作表级别:Worksheet.BeforeDelete 事件。

作为初学者,我无法很好地应用后两个,但我尝试应用第一个。

Private Sub Workbook_SheetBeforeDelete(ByVal Sh As Object) 
Call Macro
End Sub

这在工作表上效果很好,但在图表(仅包含图表的工作表)上不起作用。

我的目标是调整计数器并可能重命名工作表,因为我的工作表被命名为 Sheetname(1),..(2).. 并且用户经常删除工作表。

我搜索了很多,但找不到任何可以遵循的例子。

任何帮助将非常感激。


看来是执行疏忽了,这个事件本来应该按照设计执行的。事实上,Sheets集合是Worksheets and Charts收藏。由于活动的名称是Workbook_SheetBeforeDelete (not Workbook_WorksheetBeforeDelete),常识表明该事件应该适用于所有Sheets,即两者Worksheets and Charts.

请注意,其他事件,例如Workbook_SheetDeactivate为图表和工作表引发。这确认了错误,但也建议了一种解决方法,即利用Workbook_SheetDeactivate event.

我们可以添加两个过程ThisWorkbook代码模块。checkChartDelete()检查图表是否已被删除并启动适当的操作。需要通过调用Application.OnTime,因此它通过静态变量获取其参数chartNameToCheck.

' Code Module ThisWorkbook
Option Explicit
Private chartNameToCheck As String
Private Sub checkChartDelete()
    On Error Resume Next
    Dim x: Set x = Sheets(chartNameToCheck)
    If Err.Number <> 0 Then
        '**********************************************
        ' call or do here the action on chart deleted '
        '**********************************************
        MsgBox "chart deleted: " & chartNameToCheck
    End If
    chartNameToCheck = ""
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    If TypeName(Sh) <> "Chart" Then Exit Sub
    chartNameToCheck = Sh.name
    Application.OnTime Now, "ThisWorkbook.checkChartDelete"
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除工作表/图表事件 VBA 的相关文章

随机推荐

  • hbase 和 hive 有什么区别? (Hadoop)

    根据我的理解 Hbase是Hadoop数据库 Hive是数据仓库 Hive 允许创建表并在其中存储数据 您还可以将现有的 HBase 表映射到 Hive 并对其进行操作 如果 hive 能做到这一切 为什么我们应该使用 hbase 我们可以
  • 尝试将第三个项目添加到过滤器时,“参数数据类型 ntext 对于上层函数的参数 1 无效”

    我一直在关注 ASP NET 网站上的 Contoso 大学教程 我正在尝试扩展我的技能 因此决定尝试向过滤器添加第三个选项 该教程提供 if String IsNullOrEmpty searchString students stude
  • 在 PHP 中用换行符替换文字字符串 \r\n 时出现问题

    我有一个包含文字字符串的文本文件 r n在里面 我想用实际的换行符 n 替换它 我知道正则表达式 r n 应该匹配它 我已经在Reggy 但我无法让它在 PHP 中工作 我尝试过以下变体 preg replace r n n line pr
  • 将参数传递给 boost::thread 没有重载函数需要 2 个参数

    从 boost thread 文档看来 我可以通过这样做将参数传递给线程函数 boost thread myThread new boost thread callbackFunc param 然而 当我这样做时 编译器抱怨说 没有重载函数
  • preg_match() 未知修饰符 '[' 帮助

    我有这个正则表达式来获取 YouTube 视频 ID lt v a zA Z0 9 lt 0 9 n lt v n 我从那里得到它 正则表达式解析 youtube yid 问题是我得到preg match Unknown modifier
  • OrientDB ETL 加载 CSV,其中顶点在一个文件中,边在另一个文件中

    我有一些数据位于 2 个 CSV 文件中 一个包含顶点 另一个文件包含另一个文件中的边 我正在研究如何使用 ETL 来设置它 已经接近但还没有完全实现 它基本上可以工作 但我的边缘有属性 我不确定它们是否正确加载 这个问题很有帮助 但我仍然
  • CorePlot MonoMac 绑定崩溃

    我正在尝试使用 Monomac 的 CorePlot 0 9 绑定 但这似乎是一项艰巨的任务 monotouch 示例的构建和运行没有任何问题 但我不需要那个 由于绑定中仅存在 CorePlotiOS dll 因此我必须自己为 osx 构建
  • 在 asp.net 中获取 BIOS 日期

    我检查管理员是否有许可证 所以我每月检查一次登录 现在我使用系统日期进行检查 但管理员更改系统日期 所以我想要日期 BIOS 日期 string crt val crt mont crt year dt v objdata select u
  • Powershell - 等待输入 10 秒 [重复]

    这个问题在这里已经有答案了 inputYN Read Host defaults to y in 10 sec y n 如果用户在 10 秒内没有提供任何输入 则默认 inputYN应转到 是 并继续执行下一个任务 你的问题引起了我的兴趣
  • java swing JTextField 设置 PlaceHolder [重复]

    这个问题在这里已经有答案了 我创建了一个 JTextField 现在我想在该 JTextField 上设置占位符 但我不知道如何 请帮忙 这是我的代码 JTextField database new JTextField Enter Dat
  • 使用 PyAudio 进行流式传输时修改音量

    我正在尝试流式传输 WAV 文件 同时剥离其中一个声道 因此它仅在一个扬声器上播放 同时降低音量 我使用 PyAudio 的原因是我必须能够 一次传输多个文件 从特定扬声器 左 右 播放声音 中断声音文件的播放 并且无法找到任何其他允许这些
  • Visual Studio 2015 社区中缺少通用应用程序模板

    我仍然无法在已安装的 Visual Studio 2015 Community 中创建新的通用应用程序 我认为原因是我运行的是 Windows 8 1 今天我升级到Windows 10 但没有可用的 通用应用程序 模板 我已经安装了 Win
  • 使用 Grails 在电子邮件中发送图像

    我正在使用 Grails邮件插件发送电子邮件 我想在电子邮件正文中发送图像 而不是作为附件 我想要的是图像显示在电子邮件正文本身中 就像在新闻通讯中一样 我试过 img style display block height 100px wi
  • git push --force,在幕后

    当你使用 force 进行 git push 时到底会发生什么 我已经在网上搜索了大约一个小时 我能找到的最相关的答案是 Same as git push but force the push even if it results in a
  • 如何将列表项从字符串转换为整数?

    我有一个字符串列表列表 如下所示l 1 2 3 4 5 6 2 3 2 3 4 我想从第 2 项开始将列表视为 int 以下代码实现了目的 但没有将列表项转换为 int gt gt gt l i 2 for i in range len l
  • 在管理中列出过滤器和搜索结果

    在我覆盖之后get search results方法 list filter不起作用 但搜索字段按我的预期工作 class NaruceniProduktiAdmin admin ModelAdmin search fields broj
  • 使用 Eloquent/Raw Laravel 查询的 Group Concat

    我有一个以 Eloquent 形式存储的对象结构 item id 2 item color Black item size L item Quantity 5 item id 2 item color Black item size M i
  • 为什么将列表转换为集合比将生成器转换为集合更快?

    这是一个例子 gt gt gt from timeit import timeit gt gt gt print timeit y for y in range 100 number 100000 0 7025867114395824 gt
  • 简单的素数程序 - 线程 C# 的奇怪问题

    这是我的代码 using System using System Collections Generic using System Linq using System Text using System Threading namespac
  • 删除工作表/图表事件 VBA

    我试图在删除工作表 Excel 时触发宏 自 2010 年以来 出现了不同的删除事件 应用程序级别 Application SheetBeforeDelete 事件 工作簿级别 Workbook SheetBeforeDelete 事件 工