Excel要怎么做到点击某个单元格即执行宏?

各位大侠好 我编写了一套宏命令
其中在ThisWorkbook总表下有这三段宏命令
Private Sub Workbook_Open()
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
现在问题是 在第三段宏命令中我要实现点击当前工作表A1单元格即执行Workbook_Open(第一段宏命令)
我是这样编写的
If Target.Row = 1 And Target.Column = 1 Then
Call ThisWorkbook.Workbook_Open
End If
按理说我应该没写错 但文件能自动刷新(我第一段宏编写的是定时自动刷新)却不能手动刷新
请问大侠们 我这段手动刷新的代码错在哪儿了 谢谢

第1个回答  推荐于2017-12-16
你应该把那段代码写在Workbook_SheetSelectionChange里面
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Row = 1 And Target.Column = 1 Then
MsgBox ("点击了第1个单元格")
End If
End Sub本回答被提问者和网友采纳
第2个回答  2014-02-17
楼主应该发现这些类模块中的事件前面的声明:Private Sub

既然是 Private 的,那又如何能够允许你跳出某个类模块而去执行另外一个类模块中的 Private 的子程序呢?更何况你去执行工作簿的 Open 事件,而且这个工作簿已经被打开了,又何来再次发生 Open 事件呢?追问

我对宏命令和VB懂得比较初级 是边看书边搜索做出一份代码的 那请问我要做什么修改呢?
可以这样吗?
建立一个模块 然后将Workbook_Open的内容复制到这个模块 然后再call 模块n.Workbook_Open
谢谢
不过这样是不是麻烦了些 变成保存了两大段重复的代码

追答

    建立一个标准模块;

    在这个标准模块内建立新的子程序,并将其声明成 Public 类型(或者不声明,默认就是 Public 类型的);

    在其中写上楼主需要的 VBA 代码;

    然后在任何模块内的其它过程中调用这个子程序。

追问

还是给我来个例子吧 谢谢
意思是不能把第三段写在ThisWorkbook下是吗

追答

从主菜单选择“插入”→ “模块”,然后在新建的 “模块1” 中写 VBA 代码。

追问

之前已经试着这样做了 没做出来才改为在总表下写第三段代码的 不过还是谢谢你

追答

楼主如果想很快解决问题,则必须要将你的代码发上来,写出你的程序目的,然后大家才能帮你。至于你说的重复代码,那也只是你自己说出来的,我们都看不见,干急也没有办法!

这样让我们如何能帮得上你呢?!

楼主还可以到 ExcelHome 论坛上去求助:

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网