A:在Excel 2003中,常使用下面的代码来禁用剪切、复制、粘贴等功能。
DimcmdBar As Comman...
Q:在Excel中,如何禁止使用剪切、复制、粘贴功能,以避免他人破坏我的数据?
A:在Excel 2003中,常使用下面的代码来禁用剪切、复制、粘贴等功能。
DimcmdBar As CommandBar
DimcbrCtl As CommandBarControl
SubDisableCutCopyPaste()
‘禁用快捷菜单中的命令
DoWithControl 21, False ‘剪切
DoWithControl 19, False ‘复制
DoWithControl 22, False ‘粘贴
DoWithControl 755, False ‘选择性粘贴
‘快捷键命令
With Application
.OnKey “^c”, “”
.OnKey “^x”, “”
.OnKey “^v”, “”
.CellDragAndDrop = False
.OnDoubleClick = “test”
End With
EndSub
SubDoWithControl(iId As Integer, blnState As Boolean)
Dim cmbBar As CommandBar
如何获取公式、在用户窗体中操作工作表、列出用户窗体名称等问题的答疑
近期有很多朋友通过在微信留言和发送消息、以及发送邮件问一些关于Excel和VBA的应用问题,在此选几个问题作出自已的解答,希望对朋友们有所帮助。以后我会在每周末,通过问与答的形式推送一周以来我所解答的一些问题,与大家分享。 Q:我想去除工作表中公式的等号,从而直观地获取公式? A:可以使用下面的VBA代码来完成:
Dim cmbCtl As CommandBarControl
On Error Resume Next
For Each cmbBar In Application.CommandBars
Set cmbCtl =cmbBar.FindControl(ID:=iId, Recursive:=True)
If Not cmbCtl Is Nothing ThencmbCtl.Enabled = blnState
Next cmbBar
EndSub
Subtest()
MsgBox “命令不可用!”
EndSub
然而,在Excel 2007及以后的版本中,上述代码只能禁用快捷菜单和快捷方式的剪切、复制、粘贴等功能,在功能区中剪切、复制、粘贴仍然可以使用,快速访问工具栏中的也可以使用。如下图1所示。
图1
从图1中可以看出,单元格快捷菜单中的剪切、复制、粘贴等功能命令全变灰了,即表示不能使用了,但功能区和快速访问工具栏中的仍然可用。
此时,需要通过XML代码定制功能区来实现禁用功能区命令。关闭工作簿并使用Custom UI Editor打开工作簿,输入下图2所示的XML代码:
图2
验证无误并保存,关闭Custom UI Editor,重新打开工作簿,可以看到功能区和快速访问工具栏中的剪切、复制、粘贴等功能也都变灰了,如图3所示。
图3
注:当在VBE或者其他应用程序中进行复制操作后,复制的数据会保存在剪贴板中,可以通过剪贴板在工作簿中粘贴这些数据。我想,可以使用DataObject对象来删除剪贴板的内容。
如何理解公式中的数组?
Q:我知道数组公式很强大,很想学习,但有点想不明白公式中的数组,能够解释一下吗? A:数组公式确实非常强大,能够完成许多使用普通公式难以完成的任务。数组公式通常会生成中间数组,最终结果可能是一个值,也可能是一组值。下面,我们简单地介绍一下数组公式生成的中间数组,以促进对数组公式的理解。 如图1所示,在单元格D2中输