ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5631|回复: 8

[原创] 模拟officetab的VBA宏,通用于Office 各个组件

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-4-7 11:33 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:Application对象
一直都是索取,这次回报一个自用的切换工作窗口的宏脚本,可以实现officetab的主要功能。
您可以给这两个宏设定自己喜欢的快捷键,推荐alt+pageup。我现在用alt+left
指定快捷键的方法如图所示。

按楼下要求加了个demo_officetab.doc,请打开它,并new几个空文档,试试alt+left(左右方向键)!!
excel、ppt都是一样的,请按demo处理即可。

一直想给这两个宏加上指定快捷键的功能,以便运行一次后就不用手工添加快捷键了(手工添加实在麻烦)。
这里向大牛们讨教用宏指定快捷键的方法,请不吝赐教。


'========================================
'宏实现类似于officetab切换页
'适用于主要office组件,word、excel、ppt
'foxs@21cn.com                          2011.3.25
'========================================
Sub officetab_R()
                                                                         '右移,推荐快捷键为 alt+pageup
                                                                         '与excel 向右换页的快捷键冲突,好在不常用
        Dim cur As Integer
        Dim total As Integer
        Dim tar As Integer
        
        cur = Application.ActiveWindow.Index        'Window 对象的index和WindowNumber属性是不同的
        total = Application.Windows.Count
        'Debug.Print "cur = " & cur                                '显示当前窗口的序号
        'Debug.Print "total = " & total                        '显示当前程序打开窗口的总数
        
        tar = cur MOD total + 1                                        '除余真好,可以构建右移的环形堆栈,等效于下面的if语句
'        If cur = total Then                                                '构建一个环形堆栈,tar = cur ++        
'                tar = 1
'                Else: tar = cur + 1
'        End If
        
        Windows(tar).Activate                                        '显示目标窗口

End Sub

Sub officetab_L()
                                                                                        '左移,推荐快捷键为 alt+pagedown
                                                                                        '与excel 向左换页的快捷键冲突,好在不常用
        Dim cur As Integer
        Dim total As Integer
        Dim tar As Integer
        
        cur = Application.ActiveWindow.Index        'Window 对象的index和WindowNumber属性是不同的
        total = Application.Windows.Count
        'Debug.Print "cur = " & cur                                '显示当前窗口的序号
        'Debug.Print "total = " & total                        '显示当前程序打开窗口的总数
        
        tar = cur - 1 + total - Sgn(cur - 1) * total                '可费了我牛劲,两天时间啊
        'tar = MOD(-cur,total) + 1                                '如果使用excel的公式函数,可以这么写,vba中决不可以!
                                                                                        'excel的除余函数和vba的运算符mod对负数的结果不一样!
                                                                                        '        vba:        -2 MOD 3 = -2
                                                                                        '        excel:        MOD(-2,3) = 1
'左移相当于右移(total-1)次,所以还可以在右移的基础上做一个(total-1)次的循环,得到左移结果
'        If cur = 1 Then                                                        '构建一个环形堆栈,tar = cur --        
'                tar = total
'                Else: tar = cur - 1
'        End If
        
        Windows(tar).Activate                                        '显示目标窗口
        
End Sub

[ 本帖最后由 adda 于 2011-4-7 13:00 编辑 ]
自定义快捷键.gif

demo_officetab.rar

17.29 KB, 下载次数: 179

TA的精华主题

TA的得分主题

发表于 2011-4-7 11:52 | 显示全部楼层
楼主做个附件啊。谢谢。如何用啊?

TA的精华主题

TA的得分主题

发表于 2011-4-7 12:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不错收藏了。

TA的精华主题

TA的得分主题

发表于 2011-4-7 13:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
快捷键应该可以在Private Sub Document_Open()或Private Sub Workbook_Open()中指定。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-4-7 13:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
写另外一个宏会比较麻烦,最好能集成到当前宏里,第一次运行当前宏即可添加快捷键,以后就不用添加了,盼望高手写个示范代码

TA的精华主题

TA的得分主题

发表于 2011-4-7 14:23 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-11-28 20:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
一部分是采用某位大侠的代码,一部分是自己写的,参考其中快捷键的设置。谢谢

拆分合并工具---自动加载R11.zip

94.38 KB, 下载次数: 80

TA的精华主题

TA的得分主题

发表于 2013-1-5 13:59 | 显示全部楼层
请问你这个宏如何卸载?我加载后, alt+left(左右方向键)不起作用,无法切换

TA的精华主题

TA的得分主题

发表于 2020-2-13 22:26 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 04:47 , Processed in 0.046752 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表