Excel 数据有效性(在 Excel 2013 及以上版本中改称数据验证)是一项很方便的功能,帮助我们让用户在单元格中输入指定的数据 。然而,将数据复制粘贴到设置了数据有效的单元格时,会破坏掉数据有效设置 。
利用 VBA 代码,可以避免因粘贴数据而破坏单元格数据有效设置 。我原来的思路是,如果是有数据有效设置的单元格,在用户粘贴数据前,我保存数据有效设置,在用户但一直没有着手编写代码,今天在jkp-ads.com 中看到实现这样功能的代码,偷个懒,稍稍作整理和修改,辑录于此,供有需要的朋友参考 。
要想避免粘贴操作带来的影响,首先要捕获所有可以采用的粘贴操作命令,有很多粘贴命令,包括:
1.Ctrl + V 组合键
2.Ctrl +插入组合键
3.Shift +插入组合键
4.输入键
5. 功能区,菜单等位置的命令
下面是捕获粘贴操作并指定相应处理的代码 。
在 VBE 中,插入一个称为 clsCommandBarCatcher 的类模块,输入代码:
‘ 捕获命令预设的预设以阻止粘贴
公共WithEvents oComBarCtl作为Office.CommandBarButton
私人子Class_Terminate()
设置oComBarCtl = Nothing
结束子
私人Sub oComBarCtl_Click(_
ByVal Ctrl作为Office.CommandBarButton,_
cancelDefault为Boolean)
cancelDefault = True
Application.OnTime现在,“ MyPasteValues”
结束子
插入一个标准模块,输入代码:
选件专用模块
“ 禁用复制粘贴
昏暗的mcCatchers作为收藏
‘ 确保将所有的复制操作重定向到自已的操作
‘ 视网膜覆盖掉样式和有效性验证
子CatchPaste()
StopCatchPaste
设置mcCatchers =新收藏
‘ 粘贴按钮
AddCatch“虚拟”,22
‘ 粘贴(带拖动)
EnableDisableControl 6002,否
‘ 选择性粘贴按钮
AddCatch“虚拟”,755
‘ 粘贴链接按钮
AddCatch“虚拟”,2787年
‘ 粘贴格式按钮
AddCatch“虚拟”,369
‘ 插入剪切单元格按钮
AddCatch“虚拟”,3185
‘ 插入复制单元格按钮
AddCatch“虚拟”,3187
‘Ctrl + V
Application.OnKey“ ^ v”,“ MyPasteValues”
‘Ctrl +插入
Application.OnKey“ ^ {Insert}”,“ MyPasteValues”
‘Shift +插入
Application.OnKey“ + {Insert}”,“ MyPasteValues”
‘输入
Application.OnKey“?”,“ MyPasteValues”
Application.OnKey“ {Enter}”,“ MyPasteValues”
‘ 修改单元格折射率模式
如果是Application.CellDragAndDrop然后
Application.CellDragAndDrop =假
万一
结束子
‘ 重置粘贴操作为重置值
子StopCatchPaste()
尽可能暗淡
关于错误继续
设置mcCatchers = Nothing
EnableDisableControl 6002,真
Application.OnKey“ ^ v”
Application.OnKey“ ^ {插入}”
Application.OnKey“ + {插入}”
Application.OnKey“?”
Application.OnKey“ {Enter}”
‘Application.CellDragAndDrop = True
结束子
‘ 添加到监控的命令栏控件
Sub AddCatch(sCombarName为字符串,lID为长)
Dim oCtl作为CommandBarControl
昏暗的CCatcher作为clsCommandBarCatcher
Dim oBar作为CommandBar
设置oCtl =否
关于错误继续
设置oBar = Application.CommandBars(sCombarName)
如果oBar什么都没有,那么
设置oBar = Application.CommandBars.Add(sCombarName,,,True)
oBar.Controls.Add ID:= lID
oBar.Visible = True
万一
带oBar
设置oCtl = .FindControl(ID:= lID,递归:= True)
如果oCtl什么都没有
推荐阅读
- 鸡蛋羹有蜂窝怎么回事
- 怎么将一个文本文件中满足指定条件的内容筛选到另一个文本文件中?
- 适用于Excel Windows API查看器
- excel队列
- excel实战技巧:模拟占位输出
- june怎么读
- 红豆小米粥怎么做好吃
- 希腊轻乳酪蛋糕怎么做好吃
- 水果盒子蛋糕怎么做好吃
- 怎么快速将多列数据转换成多行数据