Excel要怎么做到点击某个单元格即执行宏?
各位大侠好我编写了一套宏命令其中在ThisWorkbook总表下有这三段宏命令PrivateSubWorkbook_Open()PrivateSubWorkbook_Be...
各位大侠好 我编写了一套宏命令
其中在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
按理说我应该没写错 但文件能自动刷新(我第一段宏编写的是定时自动刷新)却不能手动刷新
请问大侠们 我这段手动刷新的代码错在哪儿了 谢谢 展开
其中在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
按理说我应该没写错 但文件能自动刷新(我第一段宏编写的是定时自动刷新)却不能手动刷新
请问大侠们 我这段手动刷新的代码错在哪儿了 谢谢 展开
展开全部
你应该把那段代码写在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
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
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主应该发现这些类模块中的事件前面的声明:Private Sub
既然是 Private 的,那又如何能够允许你跳出某个类模块而去执行另外一个类模块中的 Private 的子程序呢?更何况你去执行工作簿的 Open 事件,而且这个工作簿已经被打开了,又何来再次发生 Open 事件呢?
既然是 Private 的,那又如何能够允许你跳出某个类模块而去执行另外一个类模块中的 Private 的子程序呢?更何况你去执行工作簿的 Open 事件,而且这个工作簿已经被打开了,又何来再次发生 Open 事件呢?
更多追问追答
追问
我对宏命令和VB懂得比较初级 是边看书边搜索做出一份代码的 那请问我要做什么修改呢?
可以这样吗?
建立一个模块 然后将Workbook_Open的内容复制到这个模块 然后再call 模块n.Workbook_Open
谢谢
不过这样是不是麻烦了些 变成保存了两大段重复的代码
追答
建立一个标准模块;
在这个标准模块内建立新的子程序,并将其声明成 Public 类型(或者不声明,默认就是 Public 类型的);
在其中写上楼主需要的 VBA 代码;
然后在任何模块内的其它过程中调用这个子程序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询