在Excel单元格或多单元格区域边缘拖动区域,可移动到其他区域,有时候不需要这种操作,为了避免错误,Excel提供了关闭此功能的VBA事件
动图演示
代码区
'ThisWorkbook中的代码是全局可用,相比sh表中的代码更方便, 'sh表代码请查看Sheet12中 'Private Sub Workbook_SheetActivate(ByVal Sh As Object) ' If Sh.Name Like "*" & "Sheet" & "*" Then ' '如果工作表名称包含Sheet时,LIKE字符区分大小写 ' MsgBox Sh.Name '返回激活的工作表名 ' End If 'End Sub Private Sub Workbook_SheetActivate(ByVal Sh As Object) Dim s s = ",xxx,yyy,zzz,010禁用单元格拖放," '加逗号,是为了避免出现类似xx也能被查找到,避免错误结果 If InStr(1, s, "," & Sh.Name & ",") > 0 Then ' 在S中查找sh表名称,如果查找到了,结果就大于零 MsgBox "禁用拖放功能" Application.CellDragAndDrop = False Else Application.CellDragAndDrop = True '启用了拖放功能 End If End Sub
返回交叉区域 Application.Intersect 方法
返回一个 Range 对象,该对象表示两个或多个区域重叠的矩形区域。
语法
表达式.Intersect(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10, Arg11, Arg12, Arg13, Arg14, Arg15, Arg16, Arg17, Arg18, Arg19, Arg20, Arg21, Arg22, Arg23, Arg24, Arg25, Arg26, Arg27, Arg28, Arg29, Arg30)
表达式 一个代表 Application 对象的变量。
返回值
Range
'Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' '本段代码可使B2:B14区域单元格为空的区域禁用拖放功能, ' '但它作用到了每个工作表,不算完美的方案.只为学习使用 ' If Not Intersect(Target, [B2:B14]) Is Nothing Then ' 'Intersect用法看本文中介绍 ' If Target <> "" Then ' Application.CellDragAndDrop = False ' End If ' Else ' Application.CellDragAndDrop = True ' End If 'End Sub '--------------- '以下两段代码为:进入时禁用拖放,离开sh表时启用拖放, '代码在哪个sh代码中,哪个生效,从而达到不影响其他sh表的效果 'Private Sub Worksheet_Activate() ' Application.CellDragAndDrop = False '整个sheet禁用拖放 'End Sub 'Private Sub Worksheet_Deactivate() ' Application.CellDragAndDrop = True 'End Sub '以上代码仅控制单个sh表 '---------------
单元格拖放功能 Application.CellDragAndDrop 属性
如果启用单元格拖放功能,则该属性值为 True。Boolean 类型(True/Flase),可读写。
语法
表达式.CellDragAndDrop
表达式 一个代表 Application 对象的变量。
离开事件 Deactivate事件
表示离开当前表时(由激活状态变为非激活状态时)
与之相反的是下面的activate
activate事件
激活时触发代码,与上面的Deactivate作用相反
InStr 函数 查找字符出现位置
返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置。
语法
InStr([start, ]string1, string2[, compare])
InStr 函数示例
本示例使用 InStr 函数来查找某字符串在另一个字符串中首次出现的位置。
Dim SearchString, SearchChar, MyPos SearchString ="XXpXXpXXPXXP" ' 被搜索的字符串。 SearchChar = "P" ' 要查找字符串 "P"。 ' 从第四个字符开始,以文本比较的方式找起。返回值为 6(小写 p)。 ' 小写 p 和大写 P 在文本比较下是一样的。 MyPos = Instr(4, SearchString, SearchChar, 1) ' 从第一个字符开使,以二进制比较的方式找起。返回值为 9(大写 P)。 ' 小写 p 和大写 P 在二进制比较下是不一样的。 MyPos = Instr(1, SearchString, SearchChar, 0) ' 缺省的比对方式为二进制比较(最后一个参数可省略)。 MyPos = Instr(SearchString, SearchChar) ' 返回 9。 MyPos = Instr(1, SearchString, "W") ' 返回 0。
部分文章来源于网络 如有侵权请告知本人立即删除!
站长邮箱447800330@qq.com