Excel精英培训网

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

[已解决]求助修改代码

[复制链接]
发表于 2015-3-9 00:17 | 显示全部楼层 |阅读模式
Worksheet_Change事件代码为什么删除分摊表的时候会出现“类型不匹配”的错误?要怎么修改代码才能不会出现这个情况,感谢 求助.rar (64.04 KB, 下载次数: 5)
发表于 2015-3-9 09:10 | 显示全部楼层
  1. If Target = "" Then Exit Sub
复制代码
执行完删除操作后,target实际上已经无效了。
你看看本地窗口中target对象
QQ截图20150309090830.jpg
回复

使用道具 举报

发表于 2015-3-9 09:15 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Application.EnableEvents = False
  3.     On Error GoTo err1
  4.     If Target = "" Then Exit Sub

  5.     Dim Myc%, rng As Range, d, Myr&, Arr, Crr, i&, dc
  6.     Myc = [iv1].End(xlToLeft).Column + 1
  7.     Myr = Cells(Rows.Count, 1).End(xlUp).Row + 1
  8.     Set rng = Union(Cells(1, 5).Resize(1, Myc - 4), Cells(8, 1).Resize(Myr - 7))
  9.     If Intersect(rng, Target) Is Nothing Then Application.EnableEvents = True: Exit Sub
  10.     If Target = "" Then Exit Sub
  11.     Set d = CreateObject("Scripting.Dictionary")
  12.     Set dc = CreateObject("Scripting.Dictionary")
  13.     Arr = Sheet2.[a1].CurrentRegion
  14.     For i = 1 To UBound(Arr)
  15.         If Arr(i, 1) <> "" Then d(Arr(i, 1)) = ""
  16.         If Arr(i, 3) <> "" Then dc(Arr(i, 3)) = ""
  17.     Next

  18.     If Target.Row = 1 Then
  19.         If Not dc.exists(Target.Value) Then MsgBox "成本中心错误": Target = ""
  20.     Else
  21.         If Not d.exists(Target.Value) Then MsgBox "预算段错误": Target = ""
  22.     End If
  23. err1:
  24.     Application.EnableEvents = True
  25. End Sub
复制代码

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 07:28 , Processed in 0.321285 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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