Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1846|回复: 7

[已解决]让这代码不在指定的3个工作表中运行,该怎么办?请老师修改。

[复制链接]
发表于 2012-9-5 08:00 | 显示全部楼层 |阅读模式
自动打钩.rar (9.71 KB, 下载次数: 13)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-9-5 08:38 | 显示全部楼层
本帖最后由 hwc2ycy 于 2012-9-5 08:57 编辑
  1. Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  2. On Error Resume Next
  3. Dim r As Range
  4. If not InStr("|数据库|明细表|工作|", Sh.Name) Then
  5.     If Intersect(Target, [T1:T200,AC1:AC200,AP1:AP200]) Is Nothing Then Exit Sub
  6.         For Each r In Intersect(Target, [T1:T200,AC1:AC200,AP1:AP200])
  7.             If r = "√" Then r = "" Else r = "√"
  8.         Next
  9.     End If
  10. End Sub
复制代码
你的方法是对的,

多了个END IF了,改好了。
回复

使用道具 举报

发表于 2012-9-5 08:47 | 显示全部楼层
回复

使用道具 举报

发表于 2012-9-5 08:48 | 显示全部楼层    本楼为最佳答案   
Private Sub Workbook_SheetSelectionChange(ByVal sh As Object, ByVal Target As Range)
    On Error Resume Next
    Dim r As Range
    Dim x As Integer
   
    x = Right(ActiveSheet.CodeName, 1)
    If x = 2 Or x = 4 Or x = 5 Then End
   
    If Intersect(Target, [T1:T200,AC1:AC200,AP1:AP200]) Is Nothing Then Exit Sub
    For Each r In Intersect(Target, [T1:T200,AC1:AC200,AP1:AP200])
        If r = "√" Then r = "" Else r = "√"
    Next
End Sub

自动打钩2.rar (10.91 KB, 下载次数: 2)

评分

参与人数 1 +1 收起 理由
js5 + 1 神马都是浮云

查看全部评分

回复

使用道具 举报

发表于 2012-9-5 08:53 | 显示全部楼层
爱疯 发表于 2012-9-5 08:48
Private Sub Workbook_SheetSelectionChange(ByVal sh As Object, ByVal Target As Range)
    On Error R ...

codename,锁定了。
不怕工作表改名,
回复

使用道具 举报

 楼主| 发表于 2012-9-5 09:14 | 显示全部楼层
hwc2ycy 发表于 2012-9-5 08:38
你的方法是对的,

多了个END IF了,改好了。

老师您修改的代码,在2007EXCEL中无效,不知道在2003中是否正常。
回复

使用道具 举报

发表于 2012-9-5 09:24 | 显示全部楼层
  1. Private Sub Workbook_SheetSelectionChange(ByVal sh As Object, ByVal Target As Range)
  2. On Error Resume Next
  3. Dim r As Range
  4. Dim x As Integer
  5. x = ActiveSheet.Index
  6. If x = 1 Or x = 3 Or x = 6 Then
  7. If Intersect(Target, [T1:T200,AC1:AC200,AP1:AP200]) Is Nothing Then Exit Sub
  8. For Each r In Intersect(Target, [T1:T200,AC1:AC200,AP1:AP200])
  9.   If r = "√" Then r = "" Else r = "√"
  10. Next
  11. End If
  12. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
js5 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2012-9-5 09:43 | 显示全部楼层
本帖最后由 hwc2ycy 于 2012-9-5 09:51 编辑
js5 发表于 2012-9-5 09:14
老师您修改的代码,在2007EXCEL中无效,不知道在2003中是否正常。


原来IF条件判断有误了。
得改成
f InStr("|数据库|明细表|工作|", sh.Name) = 0 Then就好了。
多谢你了。

刚刚仔细对比,原来在VBA中 NOT 6=-7,NOT 0=-1,NOT -2=1
所以在任意工作表里的单元格就会打勾的。

评分

参与人数 1 +1 收起 理由
js5 + 1 赞一个!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 10:03 , Processed in 1.066092 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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