Excel精英培训网

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

[已解决]只修改D2单元格的数据有效性的代码

[复制链接]
发表于 2016-3-25 23:40 | 显示全部楼层 |阅读模式
本帖最后由 feiaoli 于 2016-3-26 23:40 编辑

老师,D2单元格数据有效性没有和A列的添加一起变动呢?D2的数据有效性到了A35行向下就不显示日期了。我看老师的代码是到了1000行了,有效性看不出是哪里设置的,还请老师给看一下,修改一下代码!万分感激!

请只修改D2单元格的数据有效性的代码,其他代码功能不要动。谢谢!


代码如下
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim xrng As Range
  3.     If Target.Address <> [d2].Address Then Exit Sub
  4.     Dim brr(1 To 2, 1 To 6)
  5.     r1 = Range("a:a").Find("汇总", , , , , xlNext).Row     '上一张表的汇总行
  6.     r2 = Range("a:a").Find("汇总", , , , , xlPrevious).Row        '下一张表的汇总行
  7.     rq = Target    '给定日期
  8.     If rq = "全部" Then
  9.         [b4].Resize(1, 6).Value = Cells(r2, 2).Resize(1, 6).Value
  10.         [b5].Resize(1, 6).Value = ""
  11.         [b6].Resize(1, 6).Value = Cells(r1, 2).Resize(1, 6).Value
  12.     Else
  13.         arr = Range("a8:g" & r1 - 1)
  14.         nd = Year(rq)    '年度
  15.         For i = 1 To UBound(arr)
  16.             xrq = arr(i, 1) '日期
  17.             If xrq <= rq And nd = Year(xrq) Then    '同年累计
  18.                 For j = 1 To 6
  19.                     brr(2, j) = brr(2, j) + arr(i, j + 1)
  20.                     If rq = xrq Then brr(1, j) = arr(i, j + 1)    '本月数
  21.                 Next
  22.             End If
  23.         Next
  24.         Range("b5:g6") = brr
  25.         Set xrng = Range("a:a").Find(nd, , , lookat:=xlWhole)    '全年预算
  26.         If Not xrng Is Nothing Then [b4].Resize(1, 6).Value = Cells(xrng.Row, 2).Resize(1, 6).Value
  27.     End If
  28. End Sub
复制代码
最佳答案
2016-3-26 08:53
这个在2003版里可以
三公经费(2013-2015)1.rar (15.29 KB, 下载次数: 20)

三公经费(2013-2015)1.rar

14.8 KB, 下载次数: 14

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-3-26 00:34 | 显示全部楼层
gfdgh43h34.gif


我试了下,如图,数据有效性一直到是43行结束的,即最后一项是2015/12/1。
因为A44="汇总",所以A44没被加入数据有效性。
最后一项并不是1楼说明中的35行(A35=2015/4/1)呀?

评分

参与人数 1 +3 收起 理由
feiaoli + 3 赞一个

查看全部评分

回复

使用道具 举报

发表于 2016-3-26 08:07 | 显示全部楼层
在2003版本里变量“x” 只能存放256个字符,所以只添加到A35的一半数据,
在2007版里就没有这个情况啦。

评分

参与人数 1 +3 收起 理由
feiaoli + 3 我和小伙伴都惊呆了

查看全部评分

回复

使用道具 举报

发表于 2016-3-26 08:53 | 显示全部楼层    本楼为最佳答案   
这个在2003版里可以
三公经费(2013-2015)1.rar (15.29 KB, 下载次数: 20)

评分

参与人数 1 +3 收起 理由
feiaoli + 3 我和小伙伴都惊呆了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-3-26 23:07 | 显示全部楼层
zjdh 发表于 2016-3-26 08:53
这个在2003版里可以

非常感谢老师!感激之情无以言表。完全解决了我的问题!excel精英真的是不是【精英】两个字可以解决的板块,真的是藏龙卧虎灵地。再次五体投地的谢谢老师!

三公经费(2013-2015)1.rar

15.29 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2016-3-26 23:09 | 显示全部楼层
zjdh 发表于 2016-3-26 08:07
在2003版本里变量“x” 只能存放256个字符,所以只添加到A35的一半数据,
在2007版里就没有这个情况啦。

谢谢zjdh 老师的讲解
回复

使用道具 举报

 楼主| 发表于 2016-3-26 23:11 | 显示全部楼层
爱疯 发表于 2016-3-26 00:34
我试了下,如图,数据有效性一直到是43行结束的,即最后一项是2015/12/1。
因为A44="汇总",所以A44 ...

谢谢爱疯 老师,辛苦了!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 07:21 , Processed in 0.152380 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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