Excel精英培训网

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

[已解决]VBA程序出错,请大神帮忙

[复制链接]
发表于 2017-6-27 10:36 | 显示全部楼层 |阅读模式
本帖最后由 牛肉面缠绕地球 于 2017-6-28 09:03 编辑

一个简单的多条件查询表,老是出错不会调试,请大神帮忙,谢谢。见附件。---------附件里面有我自己编写的宏和论坛大神帮忙编写的宏,但还是无法完全达到我的目标,附件里面有详细说明,请大家帮忙看看。

最佳答案
2017-6-29 09:20
牛肉面缠绕地球 发表于 2017-6-29 09:10
你是不是发错附件了?我希望的是1代码可以在任意我激活的sheet里面运行,不要指定sheet。2.运行时候不要 ...

还真是我发错了
你再看看

VBA求助.zip

142.21 KB, 下载次数: 16

发表于 2017-6-27 14:18 | 显示全部楼层
把你想要的具体要求说出来吧
什么十个小宏
看着头疼
回复

使用道具 举报

 楼主| 发表于 2017-6-27 15:24 | 显示全部楼层
chart888 发表于 2017-6-27 14:18
把你想要的具体要求说出来吧
什么十个小宏
看着头疼

已经重新写好了。
回复

使用道具 举报

发表于 2017-6-27 15:32 | 显示全部楼层
1、返回查询结果时候都不要覆盖掉第30行以后的原数据。
答:每次输出的行数是x,可令x=iif(x<27,x,27),这样每次输出最多27行(第3行--第29行)
2、制定了10个小宏,希望能合并为一个宏,运行一次就能得到结果
答: sub main
            call 小宏1
           call 小宏2
           。。。。。
          call 小宏10
     end sub
回复

使用道具 举报

发表于 2017-6-27 16:00 | 显示全部楼层
  1. Sub Test()
  2. Dim Arr
  3. Dim i&, r&
  4. Dim AA, Sr As String
  5. On Error Resume Next
  6. Arr = Sheets("源数据").[A1].CurrentRegion
  7. r = 2
  8. With Sheets("查询")
  9.     .Range("A3:E" & Rows.Count).ClearContents
  10.     If .Cells(1, 2) = "" And .Cells(1, 4) = "" Then MsgBox "请输入查询条件"
  11.     If .Cells(1, 2) <> "" And .Cells(1, 4) <> "" Then
  12.         AA = .Cells(1, 2) & "|" & Sheets("查询").Cells(1, 4)
  13.         For i = 2 To UBound(Arr)
  14.             Sr = Arr(i, 1) & "|" & Arr(i, 2)
  15.             If AA = Sr Then
  16.                 r = r + 1
  17.                 .Cells(r, 2) = Arr(i, 1): .Cells(r, 3) = Arr(i, 2)
  18.                 .Cells(r, 4) = Arr(i, 3): .Cells(r, 5) = Arr(i, 4)
  19.             End If
  20.         Next
  21.     Else
  22.         For i = 2 To UBound(Arr)
  23.             If Arr(i, 2) = .Cells(1, 4) Then
  24.                 r = r + 1
  25.                 .Cells(r, 2) = Arr(i, 1): .Cells(r, 3) = Arr(i, 2)
  26.                 .Cells(r, 4) = Arr(i, 3): .Cells(r, 5) = Arr(i, 4)
  27.             End If
  28.         Next
  29.     End If
  30. End With
  31. End Sub
复制代码

求助.zip

140.62 KB, 下载次数: 6

回复

使用道具 举报

 楼主| 发表于 2017-6-28 08:28 | 显示全部楼层
grf1973 发表于 2017-6-27 15:32
1、返回查询结果时候都不要覆盖掉第30行以后的原数据。
答:每次输出的行数是x,可令x=iif(x

谢谢,懂了!
回复

使用道具 举报

 楼主| 发表于 2017-6-28 09:04 | 显示全部楼层

能帮忙看看我的附件吗?我还是不会。。
回复

使用道具 举报

 楼主| 发表于 2017-6-28 09:05 | 显示全部楼层

你编写的只能用于制定sheet,我想用于任意sheet,请帮忙再看看附件,里面有说明。。
回复

使用道具 举报

发表于 2017-6-28 09:18 | 显示全部楼层
本帖最后由 chart888 于 2017-6-28 09:20 编辑
牛肉面缠绕地球 发表于 2017-6-28 09:05
你编写的只能用于制定sheet,我想用于任意sheet,请帮忙再看看附件,里面有说明。。

1.从“源数据”返回查询结果到任意一个sheet,就是点那个sheet就返回到那个sheet,而非只用于目前这个sheet“查询”,因为我要返回的sheet有很多。
你是每个sheet用按钮单独控制,还是一个按钮后所有的sheet都进行查询?


5.返回查询结果时,不要覆盖目前sheet的第30行以后的数据
如果查询到的数据超过了30行怎么办?

回复

使用道具 举报

 楼主| 发表于 2017-6-28 15:36 | 显示全部楼层
chart888 发表于 2017-6-28 09:18
1.从“源数据”返回查询结果到任意一个sheet,就是点那个sheet就返回到那个sheet,而非只用于目前这个she ...

1,我想点一个sheet,自己手动运行一次宏,其实有没有按钮没关系。
2.查询结果是不会超过30行的。主要是30行以后有别的数据,我不能改变工作表格式,所有只能覆盖前30行。

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 01:46 , Processed in 0.409152 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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