鼠标右键作为快捷方式的一个入口,很多问题可以得到解决,同理,Excel应用中也有其特定的右键功能,当然了,这些功能都是程序内置的一些常用项目。
在工作当中,我们可能用到一些本职相关的一些功能,如何来添加到右键功能里来进行操作就显得很重要了。
下面根据VBA的一些代码,来实现这样的应用解决方案。
如下图所示,对话框是通过右键来弹出的,并不是Excel默认的功能项目,我们将学会如何实现这样的效果。
其中,设置了一些按钮,按钮有一些功能,可以实现添加数据、删除数据、设置单元格颜色等等操作。
如果愿意,可以对按钮事件进行编程,以实现自己想要的功能。
本示例右键以窗体形式给出,如下图所示:
这个窗体需要手动来制作,其过程就不在此介绍了。
重点看下,如何实现单击右键弹出它来,并且屏蔽掉默认右键。
代码:
Option Explicit
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'自定义右键功能
Cancel = True '默认右键不弹出
Dim tx As Double, lx As Double
tx = Application.Windows(1).Height - Windows(1).UsableHeight
lx = Application.Windows(1).Width - Windows(1).UsableWidth
Dim tr As Double, tc As Double
tr = Target.Left + lx '定位窗体左边距
tc = Target.Top + Target.Height '定位窗体上边距
Dim fObj As Object
Set fObj = UserForm1'返回窗体给变量fObj
With fObj
.Left = tr'左侧位置
.Top = tc'顶部位置
.Width = 200'窗体宽度
.Height = 320'窗体高度
.Caption = "功能项目"
.CommandButton1.Caption = "当前文件格式代码:" & ThisWorkbook.FileFormat
.CommandButton2.Caption = "当前位置坐标:" & ActiveCell.Top & "," & ActiveCell.Left
.CommandButton3.Caption = "设置背景颜色"
.CommandButton4.Caption = "清除颜色"
.CommandButton5.Caption = "清除内容"
.CommandButton6.Caption = "关 闭"
.Show'显示窗体
End With
Set fObj = Nothing'清除变量
End Sub
如上代码所示,在
Worksheet_BeforeRightClick事件中进行编辑,这个是固定的,也就是当工作表右键被单击时发生的事件,代码一定要写在这里。
此事件有两个参数传递,一个是Target,另一个是Cancel。前者是一个Range对象,后者是一个布尔变量。
当变量Cancel值为True时,将不弹出默认右键。
变量Target为鼠标按下时离鼠标最近的单元格Range对象。
通过这两个变量,可以实现一些相应的功能编码。
如本文中,取鼠标位置,定位窗体位置,设置单元格内容等,都用到了这两个变量。
代码中有注释,可以参考对比。
这样的一个示例对于制作快捷输入,还是十分有用的,特别是在一些常规性操作重复性比较大的情况下。