VBA 禁用单元格拖放功能 限定事件作用区域

本技巧的目的:掌握防止用户误触发拖放单元格右下角的小十字对单元格内容进行复制等操作的事件代码,避免对数据表造成破坏。

  • 下图是正常情况:在单元格右下角有小十字光标

  • 下图是有事件限定后的单元格:不出现小十字光标

1. 代码助手

  • 代码助手下载地址 EXCEL880.COM

  • 使用代码助手后,只要输入中文:拖放+空格 就会出现代码,选择需要的复制到代码窗口即可。

  • 使用代码助手能够实现代码的快速输入。

2. 事件代码

  • 单独工作表限定拖放的方法:

  • 事件代码写在相应的工作表中:

  • SelectionChange 事件:当工作表上的选定区域发生改变时发生此事件。

  • 代码:

  • Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  • If Not Intersect(Target, [G3:H5]) Is Nothing Then

  • 'Target 选定区域 与 G3:H5 两者之间的重叠区域 不为空时,即重叠时

  • Application.CellDragAndDrop = False '禁用单元格拖放功能

  • Else

  • Application.CellDragAndDrop = True '启用单元格拖放功能

  • End If

  • End Sub

  • 注释:

  • Target 代表:选定的区域。

  • 为了不影响其他工作表,在工作表切换成其他工作表时恢复单元格的拖放功能

  • 代码:

  • Private Sub Worksheet_Deactivate()

  • Application.CellDragAndDrop = True 启用单元格拖放功能

  • End Sub

  • 注释:

  • Deactivate:工作表被停用时发生此事件。切换成其他工作表即发生此事件。

  • 整体设定:根据工作表名称来筛选是否限定禁止拖放的方法

  • 事件代码写在 ThisWorkbook 中

  • SheetActivate: 当激活任何工作表时发生此事件

  • 代码:

  • Private Sub Workbook_SheetActivate(ByVal Sh As Object)

  • '任意工作表激活的时候 本事件启动

  • Dim s

  • s = ",xxx,yyy,zzz," '禁用的表名列表

  • If InStr(s, "," & Sh.Name & ",") > 0 Then '存在禁用列表中

  • Application.CellDragAndDrop = False '禁用单元格拖放功能

  • Else '

  • Application.CellDragAndDrop = True'启用单元格拖放功能

  • End If

  • End Sub

  • 注意:

  • ",xxx,yyy,zzz," 在字符前后加上“ ,”, 可以防止造成局部字符出现误判,有效分隔

  • sh.name 前后也要相应加上 “ ,”

(0)

相关推荐

  • VBA--事件过程

    点击上方 蓝色 文字  关注我们吧! 送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 在VBA中,当执行"打开工作簿"."选择工作 ...

  • Excel编程周末速成班第22课:使用事件

    主要内容: Excel事件的类别 编写事件处理程序代码 启用和禁用事件 工作簿.工作表和应用程序级事件 如何使用与对象无关的事件 事件是Excel编程的重要组成部分.在第20课中对事件进行过介绍,涉及 ...

  • Excel VBA Range单元格操作实例

    四.Range操作 4.2取得最后一个非空单元格 xlDown/xlToRight/xlToLeft/xlUp Dim ERow as Long Erow=Range("A" &a ...

  • Excel vba双击单元格代码

    为什么要使用vba双击单元格,那是因为Excel中的数据,通过复制粘贴过来以后,不会马上变成所设置的单元格的数据类型,而是要通过双击才能变成Excel所需要的数据. 就比如说,身份证中提取过来的出生年 ...

  • vba保护单元格

    一张表中,只保护除A10:K10之外单元格,除这几个单元格外,别的不允许输入数据,不允许插入删除行列.但可以在VBA里面写数据.请问这种怎么实现,protect貌似只能保护整张表,而不能保护特定的几个 ...

  • excel如何设置单元格只能录入限定的日期

    在工作中,有时候我们需要录入日期,为了防止录入出错,我们需要为录入的单元格设置只能录入限定的日期,否则提示出错. 打开一个"2020年员工出差记录表",含有"序号&quo ...

  • python测试开发django-127.bootstrap-table 如何给单元格添加功能按钮(events)

    前言 在bootstrap-table表格最后一列添加操作按钮,可以添加编辑和删除按钮,方便操作单行数据. 添加编辑和删除按钮 在 columns 给操作按钮添加events事件,此代码需在初始化ta ...

  • vba的单元格引用的总结

    在VBA代码中引用Excel工作表中单元格区域的方式小结 分类:ExcelVBA>>ExcelVBA对象模型编程>>常用对象>>Range对象 在使用ExcelVB ...

  • 指定单元格里面的,内容发生变化,触发事件,调用VBA代码。

    通过改变一个单元格的内容,出发一个事件,根据改变的内容,进行相应的处理. 具体内容是,有一个单元个,里面的内容可以选择,分别是"1 选择:2填空:3读程序:4写代码" 这里,实现的 ...

  • Excel VBA 8.12 横向批量合并单元格 进一步提升合并功能

    前景提要 在之前几次的学习中,我们学会了如何利用VBA的merge方法来实现单元格的合并,并且尝试用代码实现了连续和非连续的相同单元格内容的合并,效果还是非常的不错的,但是后台有不少的小伙伴表示,这样 ...

  • Excel VBA 8.15 批量取消单元格合并,有现成功能!但是取消之后不能自动填充数据

    批量取消单元格合并,有现成功能!但是取消之后不能自动填充数据 点击上方"Excel和VBA",选择"置顶公众号" 致力于原创分享Excel的相关知识,源码,源文 ...