ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 在指定范围内禁用粘贴动作

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-7-24 10:44 | 显示全部楼层 |阅读模式

触发事件,在指定范围内禁用粘贴动作,求解,谢谢!

        测试附件: 指定范围内禁用粘贴动作.rar (9.02 KB, 下载次数: 7)



,,

TA的精华主题

TA的得分主题

发表于 2013-7-24 10:55 | 显示全部楼层
本帖最后由 yangyangzhifeng 于 2013-7-24 10:59 编辑

试试看
  1. Private Sub Workbook_Activate()With Application

  2.         '屏蔽常用工具栏剪切 复制 粘贴
  3.         .CommandBars(3).Controls("剪切(&T)").Enabled = False
  4.         .CommandBars(3).Controls("复制(&C)").Enabled = False
  5.         .CommandBars(3).Controls("粘贴(&P)").Enabled = False
  6.         '屏蔽单元格右键菜单中的剪切 复制 粘贴命令
  7.         .CommandBars("Cell").Controls("剪切(&T)").Enabled = False
  8.         .CommandBars("Cell").Controls("复制(&C)").Enabled = False
  9.         .CommandBars("Cell").Controls("粘贴(&P)").Enabled = False
  10.         '屏蔽编辑菜单中的剪切 复制 粘贴命令
  11.         .CommandBars(1).Controls("编辑(&E)").Controls("剪切(&T)").Enabled = False
  12.         .CommandBars(1).Controls("编辑(&E)").Controls("复制(&C)").Enabled = False
  13.         .CommandBars(1).Controls("编辑(&E)").Controls("粘贴(&P)").Enabled = False
  14.         '屏蔽键盘剪切 复制 粘贴键
  15.         .OnKey "^x", ""
  16.         .OnKey "^c", ""
  17.         .OnKey "^v", ""
  18.     End With
  19. End Sub


  20. Private Sub Workbook_Deactivate()
  21. With Application

  22.         '屏蔽常用工具栏剪切 复制 粘贴
  23.         .CommandBars(3).Controls("剪切(&T)").Enabled = True
  24.         .CommandBars(3).Controls("复制(&C)").Enabled = True
  25.         .CommandBars(3).Controls("粘贴(&P)").Enabled = True
  26.         '屏蔽单元格右键菜单中的剪切 复制 粘贴命令
  27.         .CommandBars("Cell").Controls("剪切(&T)").Enabled = True
  28.         .CommandBars("Cell").Controls("复制(&C)").Enabled = True
  29.         .CommandBars("Cell").Controls("粘贴(&P)").Enabled = True
  30.         '屏蔽编辑菜单中的剪切 复制 粘贴命令
  31.         .CommandBars(1).Controls("编辑(&E)").Controls("剪切(&T)").Enabled = True
  32.         .CommandBars(1).Controls("编辑(&E)").Controls("复制(&C)").Enabled = True
  33.         .CommandBars(1).Controls("编辑(&E)").Controls("粘贴(&P)").Enabled = True
  34.         '屏蔽键盘剪切 复制 粘贴键
  35.         .OnKey "^x"
  36.         .OnKey "^c"
  37.         .OnKey "^v"
  38.     End With
  39. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2013-7-24 11:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 yangyangzhifeng 于 2013-7-24 11:13 编辑

修改为你需要的版本

  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     With Application
  3.         If Not Intersect(Target, Range("e4:e" & Range("e65536").End(3).Row)) Is Nothing Then
  4.             '屏蔽常用工具栏 粘贴
  5.             .CommandBars(3).Controls("粘贴(&P)").Enabled = False
  6.             '屏蔽单元格右键菜单中的粘贴命令
  7.             .CommandBars("Cell").Controls("粘贴(&P)").Enabled = False
  8.             '屏蔽编辑菜单中的粘贴命令
  9.             .CommandBars(1).Controls("编辑(&E)").Controls("粘贴(&P)").Enabled = False
  10.             '屏蔽键盘粘贴键
  11.             .OnKey "^v", ""
  12.         Else
  13.             '屏蔽常用工具栏剪切 复制 粘贴
  14.             .CommandBars(3).Controls("粘贴(&P)").Enabled = True
  15.             '屏蔽单元格右键菜单中的剪切 复制 粘贴命令
  16.             .CommandBars("Cell").Controls("粘贴(&P)").Enabled = True
  17.             '屏蔽编辑菜单中的剪切 复制 粘贴命令
  18.             .CommandBars(1).Controls("编辑(&E)").Controls("粘贴(&P)").Enabled = True
  19.             '屏蔽键盘剪切 复制 粘贴键
  20.             .OnKey "^v"
  21.         End If
  22.     End With
  23. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-24 11:15 | 显示全部楼层
yangyangzhifeng 发表于 2013-7-24 10:55
试试看

感谢,但这个不是指定范围哦。

TA的精华主题

TA的得分主题

发表于 2013-7-24 11:33 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-24 11:37 | 显示全部楼层
再请教个问题,用EXCEL2010打开的话,屏蔽菜单栏的粘贴那条语句,好像对excel2010功能区无效。

TA的精华主题

TA的得分主题

发表于 2013-7-24 11:41 | 显示全部楼层
yf_home 发表于 2013-7-24 11:37
再请教个问题,用EXCEL2010打开的话,屏蔽菜单栏的粘贴那条语句,好像对excel2010功能区无效。

我没有2010,你自己修改吧,可能菜单名称不一样

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-24 12:08 | 显示全部楼层
自定常用工具栏有个贴上值的按钮,怎么用下列代码无效?

CommandBars(3).Controls("贴上值").Enabled = False

TA的精华主题

TA的得分主题

发表于 2013-7-24 12:22 | 显示全部楼层
本帖最后由 yangyangzhifeng 于 2013-7-24 12:30 编辑

运行一下以下代码,自己定位粘贴菜单位置后修改代码
  1. Sub Lqc_List() '分层次显示Excel菜单及工具栏的Index、ID、CaptionSheets.Add
  2. i = 0
  3. For Each cmd In CommandBars
  4. i = i + 1
  5. Cells(i, 1) = "Index:" & cmd.Index
  6. Cells(i, 2) = "Name:" & cmd.Name
  7.    For Each ctl In CommandBars(cmd.Name).Controls
  8.       i = i + 1
  9.       Cells(i, 3) = "Index:" & ctl.Index
  10.       Cells(i, 4) = "ID:" & ctl.ID
  11.       Cells(i, 5) = "Caption:" & ctl.Caption
  12.           CtrNum1 = 0
  13.           On Error Resume Next
  14.           CtrNum1 = ctl.Controls.Count
  15.           On Error GoTo 0
  16.           If CtrNum1 >= 1 Then
  17.              For Each ctl1 In ctl.Controls
  18.              i = i + 1
  19.              Cells(i, 6) = "Index:" & ctl1.Index
  20.              Cells(i, 7) = "ID:" & ctl1.ID
  21.              Cells(i, 8) = "Caption:" & ctl1.Caption
  22.                  CtrNum2 = 0
  23.                  On Error Resume Next
  24.                  CtrNum2 = ctl1.Controls.Count
  25.                  On Error GoTo 0
  26.                  If CtrNum2 >= 1 Then
  27.                     For Each ctl2 In ctl1.Controls
  28.                     i = i + 1
  29.                     Cells(i, 9) = "Index:" & ctl2.Index
  30.                     Cells(i, 10) = "ID:" & ctl2.ID
  31.                     Cells(i, 11) = "Caption:" & ctl2.Caption
  32.                         CtrNum3 = 0
  33.                         On Error Resume Next
  34.                         CtrNum3 = ctl2.Controls.Count
  35.                         On Error GoTo 0
  36.                         If CtrNum3 >= 1 Then
  37.                            For Each ctl3 In ctl2.Controls
  38.                            i = i + 1
  39.                            Cells(i, 12) = "Index:" & ctl3.Index
  40.                            Cells(i, 13) = "ID:" & ctl3.ID
  41.                            Cells(i, 14) = "Caption:" & ctl3.Caption
  42.                            Next ctl3
  43.                         End If
  44.                     Next ctl2
  45.                  End If
  46.              Next ctl1
  47.           End If
  48.    Next ctl
  49. Next
  50. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-24 13:28 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-26 23:58 , Processed in 0.038289 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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