Excel精英培训网

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

求助老师帮忙,想了好多天只能完成这样

[复制链接]
发表于 2017-9-20 17:24 | 显示全部楼层 |阅读模式
求老师帮忙.rar (150.08 KB, 下载次数: 5)
发表于 2017-9-20 18:19 | 显示全部楼层
Private Sub Worksheet_Change(ByVal Target As Range) '单元格改变事件
If Target.Count > 1 Then Exit Sub '单元格发生改变的个数超过1个 则退出程序
If Target.Column <> 4 Or Target.Row < 2 Then Exit Sub '如果不是D列 , 或者行号<2 , 退出程序

针对你的问题 1,2 这样回答.
你不是不熟 , 是生吞别人的 , 还没消化
回复

使用道具 举报

 楼主| 发表于 2017-9-20 18:22 | 显示全部楼层
砂海 发表于 2017-9-20 18:19
Private Sub Worksheet_Change(ByVal Target As Range) '单元格改变事件
If Target.Count > 1 Then Exit S ...

嗯,那老师能不能帮我改一下呢
回复

使用道具 举报

 楼主| 发表于 2017-9-20 18:49 | 显示全部楼层
a316667229 发表于 2017-9-20 18:22
嗯,那老师能不能帮我改一下呢

Private Sub Worksheet_Change(ByVal Target As Range)        '私有的子程序 Worksheet_Change(变量Target 为 单元格区域)
If Target.Count > 1 Then Exit Sub                          '如果 Target.Count>1 则执行 退出子程序
    If Target.Column <> 4 Or Target.Row < 2 Then Exit Sub   '如果 Target.Column<>4或者Target.Row<2 则执行 退出子程序
       Dim Arr, i&, d, t, aa, j&, n&                        '定义变量 Arr,i&,d,t,aa,j&,n&
       Set d = CreateObject("Scripting.Dictionary")         '设定d=创建对象("Scripting.Dictionary")
       Arr = [a1].CurrentRegion                             'Arr=[a1的当前区域
       For i = 2 To UBound(Arr)                             '设定变量范围为i=2到UBound(Arr)
          d(Arr(i, 1)) = d(Arr(i, 1)) & Arr(i, 2) & ","     'd(Arr(i,1))=d(Arr(i,1)) & Arr(i,2) & ","
       Next                                                 '下一个
       If d.exists(Target.Value) Then                       '如果 d.exists(Target.Value) 则执行
          t = d(Target.Value)                               't=d(Target.Value)
          n = Target.Row                                    'n=Target.Row
          t = Left(t, Len(t) - 1)                           't=左侧(t,Len(t)-1)
          If InStr(t, ",") Then                             '如果 InStr(t,",") 则执行
             aa = Split(t, ",")                             'aa=Split(t,",")
             For j = 0 To UBound(aa)                        '设定变量范围为j=0到UBound(aa)
                Cells(n + j, 5) = aa(j)                     '单元格集合(n+j,5)=aa(j)
             Next                                           '下一个
             Else                                           '否则
             Cells(n, 5) = t                                '单元格集合(n,5)=t
          End If                                            'End如果
          Else                                              '否则
                                                            '
       End If                                               'End如果
End Sub                                                    'End子程序
这语句没错啊,可不知道为何会出现每次刷新数据就要在D2双击后按回车才会刷出来要查询找的数据,而且E列的数据也要手工去掉,才会重新出来,不然就覆盖或者遗留上一次的数据

回复

使用道具 举报

发表于 2017-9-21 10:42 | 显示全部楼层
公式内的数值变化不会触发change事件。
回复

使用道具 举报

 楼主| 发表于 2017-9-21 13:37 | 显示全部楼层
大灰狼1976 发表于 2017-9-21 10:42
公式内的数值变化不会触发change事件。

能否帮忙修改一下,老师,确实N天不会弄,恳请帮帮忙
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 08:48 , Processed in 0.286417 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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