Excel精英培训网

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

[已解决]请老师帮助修改vba代码

[复制链接]
发表于 2013-3-23 21:08 | 显示全部楼层 |阅读模式
If st.Name <> ActiveSheet.Name Then
按照上面的意思:写成下面的模式为什么不行
If sh.Name = "表一" Or sh.Name = "表二" Or sh.Name = "表三" Then
请老师修改
谢谢
最佳答案
2013-3-23 21:33
  1. Sub 查询2()
  2.      Dim rng As Range
  3.     [a5:d65536].Clear
  4.     hh = 4
  5.     For Each st In Sheets
  6.         If st.Name = "表一" Or st.Name = "表二" Then

  7.            st.Range("A1:e65536").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheet3.Range("A1:e2"), CopyToRange:=Sheet3.Range("A" & hh, "e" & hh), Unique:=False
  8.            If hh > 4 Then
  9.            ActiveSheet.Rows(hh).Delete Shift:=xlUp
  10.            End If
  11.            Set rng = ActiveSheet.Range("A65536").End(xlUp)
  12.            hh = rng.Row + 1
  13.          End If
  14.     Next st
  15. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-3-23 21:14 | 显示全部楼层
最好把附件发上来   你这样写  我们也不知道是什么意思
回复

使用道具 举报

发表于 2013-3-23 21:25 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-3-23 21:27 | 显示全部楼层
hwc2ycy 发表于 2013-3-23 21:25
你这是工作簿事件吗、。

老师您好:
请见附件
搜索.rar (10.43 KB, 下载次数: 6)
回复

使用道具 举报

发表于 2013-3-23 21:27 | 显示全部楼层
下面的并没有错,只是你得和上面的实现的功能一样才成。

下面的SH只要是表一,表二,表三中的任意一个就人成立。
回复

使用道具 举报

 楼主| 发表于 2013-3-23 21:32 | 显示全部楼层
hwc2ycy 发表于 2013-3-23 21:27
下面的并没有错,只是你得和上面的实现的功能一样才成。

下面的SH只要是表一,表二,表三中的任意一个就 ...

麻烦您帮助修改一下代码吧
谢谢
Sub 查询2()
     Dim rng As Range
    [a5:d65536].Clear
    hh = 4
    For Each st In Sheets
        If st.Name <> ActiveSheet.Name Then
'If sh = "表一" Or sh = "表二" Then
           st.Range("A1:e65536").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheet3.Range("A1:e2"), CopyToRange:=ActiveSheet.Range("A" & hh, "e" & hh), Unique:=False
           If hh > 4 Then
           ActiveSheet.Rows(hh).Delete Shift:=xlUp
           End If
           Set rng = ActiveSheet.Range("A65536").End(xlUp)
           hh = rng.Row + 1
         End If
    Next st
End Sub

回复

使用道具 举报

发表于 2013-3-23 21:33 | 显示全部楼层
变量名错了,st,sh你注意下。
回复

使用道具 举报

发表于 2013-3-23 21:33 | 显示全部楼层
那把上面的改成下面的  并没有什么不可以的  只是 你把工作表名称搞错了  应该改成:
If st.Name = "表一" Or st.Name = "表二" Or st.Name = "表三" Then
回复

使用道具 举报

发表于 2013-3-23 21:33 | 显示全部楼层    本楼为最佳答案   
  1. Sub 查询2()
  2.      Dim rng As Range
  3.     [a5:d65536].Clear
  4.     hh = 4
  5.     For Each st In Sheets
  6.         If st.Name = "表一" Or st.Name = "表二" Then

  7.            st.Range("A1:e65536").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheet3.Range("A1:e2"), CopyToRange:=Sheet3.Range("A" & hh, "e" & hh), Unique:=False
  8.            If hh > 4 Then
  9.            ActiveSheet.Rows(hh).Delete Shift:=xlUp
  10.            End If
  11.            Set rng = ActiveSheet.Range("A65536").End(xlUp)
  12.            hh = rng.Row + 1
  13.          End If
  14.     Next st
  15. End Sub
复制代码
回复

使用道具 举报

发表于 2013-3-23 21:36 | 显示全部楼层
这都是小错误了,写代码的时候得注意下。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 05:05 , Processed in 0.363214 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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