|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
一直都是索取,这次回报一个自用的切换工作窗口的宏脚本,可以实现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 编辑 ] |
|