Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: jzzhmm425

[已解决]工作表全部运行同一个宏

[复制链接]
发表于 2013-3-20 15:43 | 显示全部楼层
代码的range前加上 activeworksheet
回复

使用道具 举报

 楼主| 发表于 2013-3-20 15:46 | 显示全部楼层
hwc2ycy 发表于 2013-3-20 15:38
dd的问题你自己改下就成了,代码运行后,所有的工作表都会处理一次。

太感谢你了,等的就是For Each sht In Worksheets这段代码,我知道中间得加一段代码,但是不知道加什么代码,一直在是with了,谢谢了,我去开会了,等回来再跟你聊吧
回复

使用道具 举报

发表于 2013-3-20 15:50 | 显示全部楼层
回复

使用道具 举报

发表于 2013-3-20 15:51 | 显示全部楼层    本楼为最佳答案   
  1. Sub 隐藏()

  2.     Dim Rng As Range
  3.     Dim a As Date
  4.     Dim b As Date
  5.     Dim c As Date
  6.     Dim d As Date
  7.     Dim e As Date
  8.     Dim f As Date
  9.     Dim g As Date
  10.     Dim h As Date
  11.     Dim i As Date
  12.     Dim j As Date
  13.     Dim k As Date
  14.     Dim l As Date, m As Integer, n As Integer, o As Integer, p As Integer, q As Integer
  15.     Dim sht As Worksheet

  16.     a = "2013-1-10 00:00"
  17.     b = "2013-2-10 00:00"
  18.     c = "2013-3-10 00:00"
  19.     d = "2013-4-10 00:00"
  20.     e = "2013-5-10 00:00"
  21.     f = "2013-6-10 00:00"
  22.     g = "2013-7-10 00:00"
  23.     h = "2013-8-10 00:00"
  24.     i = "2013-9-10 00:00"
  25.     j = "2013-10-10 00:00"
  26.     k = "2013-11-10 00:00"
  27.     l = "2013-12-10 00:00"


  28.     m = Year(dd)
  29.     n = Month(dd)
  30.     o = Day(dd)
  31.     p = Hour(dd)
  32.     q = Minute(dd)

  33.     For Each sht In Worksheets
  34.         With sht
  35.             For Each Rng In .Range("a:a")
  36.                 If Rng = a Or Rng = b Or Rng = c Or Rng = d Or Rng = e Or Rng = f Or Rng = g Or Rng = h Or Rng = i Or Rng = j Or Rng = k Or Rng = l Then
  37.                     .Rows(Rng.Row).EntireRow.Hidden = True
  38.                 End If
  39.             Next
  40.         End With
  41.     Next
  42. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-3-21 09:19 | 显示全部楼层
jiaqian-2004 发表于 2013-3-20 15:43
代码的range前加上 activeworksheet

帅哥你说的不对呀,我把activeworksheet加上后就没法运行了,加上activeworksheet.也不行。
回复

使用道具 举报

 楼主| 发表于 2013-3-21 09:41 | 显示全部楼层
hwc2ycy 发表于 2013-3-20 15:51

哥们特别感谢你的帮助,在这里谢谢你了。

我还想请教你个问题:代码里A列是日期,从13年1月一直排到13年12月的,比如现在是三月,那么4月到12月就要给隐藏起来。能不能把那段代码做一些改动,如:
d = "2013-4-10 00:00"
然后Rows(Rng.Row).EntireRow.Hidden = True这段代码里在加些词语,直接让d = "2013-4-10 00:00"以下9行全部隐藏呀。如果能解决这个问题,这段代码就更完美了。另外这段代码的运行时间确实挺长的,有5分钟左右了。谢谢你了

回复

使用道具 举报

发表于 2013-3-21 15:12 | 显示全部楼层
jzzhmm425 发表于 2013-3-21 09:41
哥们特别感谢你的帮助,在这里谢谢你了。

我还想请教你个问题:代码里A列是日期,从13年1月一直排到13 ...

晚上再帮你改。刚回来,脑子得休息会儿。
回复

使用道具 举报

 楼主| 发表于 2013-3-21 15:16 | 显示全部楼层
hwc2ycy 发表于 2013-3-21 15:12
晚上再帮你改。刚回来,脑子得休息会儿。

好的,很感谢你。在这个网站上你可是帮了我的大忙了
回复

使用道具 举报

 楼主| 发表于 2013-3-21 16:12 | 显示全部楼层
本帖最后由 jzzhmm425 于 2013-3-21 16:14 编辑
jzzhmm425 发表于 2013-3-21 15:16
好的,很感谢你。在这个网站上你可是帮了我的大忙了


帅哥我找到那段代码怎么改了:
把下面这段代码
.Rows(Rng.Row).EntireRow.Hidden = True

改成

.Rows(Rng.Row & ":" & Rng.Row+4).EntireRow.Hidden = True
就行了。
而且这段代码要快很多。
帅哥如果你要改的地方和我给的这个不一样,还请你列出来,我能更好的学习学习!谢了







回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 21:48 , Processed in 0.743660 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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