Excel VBA:如何从代码中触发事件?

 mobiledu2502872877 发布于 2023-02-13 22:30

我有一个Worksheet_BeforeDoubleClick事件,在目标单元格中​​打开一个列表框.我被要求通过按钮提供相同的功能,而不是(或除了)双击.

在我输入的按钮的Click事件中:

Call Worksheet_BeforeDoubleClick(Selection,true)

...所以按钮只需"双击"单元格.它似乎运作良好,但在我开始在整个项目中使用这种技术之前,我想知道是否存在我应该注意的陷阱.

从另一个事件或标准代码模块调用事件时,最佳做法是什么?

1 个回答
  • 我想知道是否存在我应该注意的陷阱.

    是的,有一个主要的陷阱.该Selection必然可能不是一个范围.看这个例子

      插入一个按钮

      插入空白图表

      在图表中插入图像.让图像突出显示

    在此输入图像描述

    假设我们有这个代码

    Private Sub CommandButton1_Click()
        Call Worksheet_BeforeDoubleClick(Selection, True)
    End Sub
    
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        MsgBox Target.Address
    End Sub
    

    现在按下按钮,您将收到错误消息.

    在此输入图像描述

    工作表事件在需要时也会触发......当选择不合适时,它们不会触发.

    说了这么多,你CAN让你的命令按钮的代码工作像这样

    Private Sub CommandButton1_Click()
        '~~> Check if what the user selected is a valid range
        If TypeName(Selection) = "Range" Then
            Call Worksheet_BeforeDoubleClick(Selection, True)
        Else
            MsgBox "Not a Valid Range"
        End If
    End Sub
    
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        MsgBox Target.Address
    End Sub
    

    但是然后你将放置所有和所有CHECKS的地方:)最好的方法是将它放在一个Sub中,如同@Sam建议,然后从中调用它Button/Worksheet_BeforeDoubleClick.

    如果您仍想从按钮调用它,请确保所有相关检查都已到位,包括正确的错误处理程序.

    2023-02-13 22:49 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有