如何直接运行ThisWorkbook里面Sheet1的宏代码呢

使用问题 · 1023 次浏览
welcome2025 创建于 2022-04-14 09:46

如何直接运行ThisWorkbook里面Sheet1的宏代码呢?


回复内容
湘喑 2022-04-14 10:00
#1

你是说用这个动作执行么,就把宏名称 插入格式 添加到选项里,然后运行动作试试

welcome2025 回复 湘喑 2022-04-15 16:23 :

是的,目前可以通过quicker来运营模块1里面的宏代码,但是不知道怎么直接运行sheet1里面的宏代码

湘喑 回复 welcome2025 2022-04-15 16:31 :

只要工作簿处于打开状态,就可以执行到的呀,你说的sheet1里面的宏代码是哪个

welcome2025 回复 湘喑 2022-04-15 17:14 :

https://getquicker.net/Sharedaction?code=897503c7-3186-4b57-8d16-08da1e38749d

就是这种,怎么直接运行,宏代码呢?我弄的这个不知道为什么总是出错

湘喑 回复 welcome2025 2022-04-15 17:28 :

原来你说的是要把VBA代码转换成VBS代码啊,VBS代码和VBA代码是不同的。第1个是VBS代码是直接运行的不需要子过程,也就是不用以sub开始和结束。第2个就是VBS变量不能为中文,第3是VBS如果要调用excel,首先要获取excel对象,如在VBA中要给当前工作表单元格A1赋值1,VBA代码直接写cells(1,1)=1即可,而用VBS的话,不能省略cells(1,1)的上级对象,必须先set application = getobject(,"excel.application"),然后application.activesheet.cells(1,1)=1这样才行。再举个例子,选择A1单元格,VBA代码为[A1].select,而VBS代码要获取excel对象后,application.activesheet.range("a1").select

湘喑 最后更新于 2022-04-15 17:29
welcome2025 回复 湘喑 2022-04-15 17:44 :

原来如此,以为你都是直接写的VBA代码,顺便再问一个问题:

我想做一个Excel聚光灯:https://getquicker.net/Sharedaction?code=6e353027-bda0-41f5-88b6-08da1d3e98c7

但是,xlsx格式保存的时候,每次需要修改xlsm格式,就很烦,想把这个做成插件,可以实现sub XX()格式的调用,放在加载宏,但是不知道怎么直接把下面的代码,同时一键添加到当前sheet表格代码里面(查看代码)实现实时刷新,达到聚光灯效果


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub

welcome2025 2022-04-15 17:36
#2

原来如此,以为你都是直接写的VBA代码,顺便再问一个问题:

我想做一个Excel聚光灯:https://getquicker.net/Sharedaction?code=6e353027-bda0-41f5-88b6-08da1d3e98c7

但是,xlsx格式保存的时候,每次需要修改xlsm格式,就很烦,想把这个做成插件,可以实现sub XX()格式的调用,放在加载宏,但是不知道怎么直接把下面的代码,同时一键添加到当前sheet表格代码里面(查看代码)实现实时刷新,达到聚光灯效果


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub
湘喑 回复 welcome2025 2022-04-15 18:04 :
大概明白你的意思了,之前我也试过,用VBS代码去VBE工程中添加代码,但太久了忘记了,好像还要先添加一个引用才行,总之比较麻烦。再一个,excel用代码做聚光灯效果,不是很理想,可以下载第三方插件,如方方格式、E灵等。总之用VBS是最麻烦的,你可以试下把聚光灯的代码加到应用程序事件中而不是工作表级事件中,看有效果没
welcome2025 回复 湘喑 2022-04-15 18:17 :

\

第三方安装程序插件还是比较多,想试一试,看看有没有简单的方法来实现。

目前有一个加载项,应该就是您说的类模块方式,只是我没这边每次运行,总是报错


https://wwb.lanzoub.com/iKUVX038zv7a
密码:8888

湘喑 回复 welcome2025 2022-04-16 09:35 :

我看了,好多我没用过的代码啊,你的水平比我强呀大佬。你是想通过加载时自动创建一个聚光灯控件,然后用条件格式去实现效果吧,但是应用程序级事件好像设置的不对,在thisworkbook的Private Sub Workbook_AddinInstall()这个过程里加两句代码    Dim aa As clsapp

  Set aa = New clsapp

在clsapp类模块的Private Sub Class_Initialize()过程中要加一句Set xlapp = Excel.Application

这样xlapp_SheetSelectionChange事件就会生效了,然后再考虑怎么通过你的聚光灯控件代码去开启和关闭了

还有你说的CustomDocumentProperties.Add这一段报错,因为我没用过这功能,无法提供帮助,刚好最近看到一个相关案例,我放图到楼下,你可以参考一下。

最后还是说一下,用代码去实现聚光灯功能,还是不怎么方便的,要么会更改单元格颜色要么会更改边框底纹之类还有就是像你这样会改变条件格式,没有十全十美的方法,用来练下手还是可以的

湘喑 2022-04-16 09:40
#3

将以上代码录入到ThisWorkbook的代码窗口中,然后保存工作簿并重启,在状态栏即可看到工作簿打开次数的信息。首次打开工作簿时其自定义属性“打开次数”的值为1,当第三次打开时则在状态栏显示“打开次数:3”。

【知识补充】

❶Workbook_Open事件表示打开工作簿时执行的事件,与命名为“Auto_open”的过程的功能一致。不过Workbook_Open事件代码必须保存在ThisWoThisWorkbook中,而“Auto_pen”过程代码则只能保存在模块中。

❷Workbook.CustomDocumentProperties表示工作簿的自定义属性集合,可以通过参数访问其子对象,也可以通过CustomDocumentProperties.add方法创建新的自定义属性(查询帮助的关键字:Workbook.CustomDocumentProperties属性)。

❸工作簿自身没有工作簿开启次数的记录,所以本例采用CustomDocumentProperties.add方法对工作簿创建一个自定义的属性,且配合Open事件让工作簿每打开一次就累加一次开启记录,其参数列表,如表8-5所示。CustomDocumentProperties.add方法的语法如下:

本例中自定义属性的名称为“打开次数”,其赋值类型为数值,所以Type参数采用msoPropertyNumber。

❹由于第一次执行代码时不存在自定义属性“打开次数”,所以执行代码“Open_Count=.Item("打开次数").Value”时会出错,而此后执行代码时则不会出错。本例正是利用此特点判断属性值“打开次数”的赋值方式,如果有错误(Err.Number不等于0),则创建自定义属性并赋值为1,如果无错误则在原来的属性值的基础上累加1。

❺当使用了“On Error Resume Next”语句,且Sub过程的代码在执行过程出错时会产生相应的错误编码,Err.Number属性则用于获取当前的错误编码。如果错误编码等于0,表示本过程没有产生过错误,否则表示有错误。Err.Number总是配合“On Error Resume Next”语句使用。在本书第9章中将详细阐述关于如何处理代码错误的技巧。

回复主贴