Excel精英培训网

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

月份区间VBA问题

[复制链接]
发表于 2020-3-16 13:12 | 显示全部楼层 |阅读模式
本帖最后由 lkk0063 于 2020-3-18 13:11 编辑

当我点击Auto Filter按钮
想要改成“多个月份”输入
例如:输入1/2/3月
显示数量1/2/3月项目的加总数量


1.jpg


test.zip

55.92 KB, 下载次数: 13

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2020-3-16 20:05 | 显示全部楼层
输入格式变了(变成month/month/.../...),n不再是数值型,所以错误提示需要你自己修改一下。
代码如下:
  1. Private Sub CommandButton1_Click()
  2. Dim n, arr, i&, mon&, ye&
  3. n = Split(InputBox("Pls inout month"), "/")
  4. ReDim arr(0 To (UBound(n) + 1) * 2 - 1)
  5. For i = 0 To UBound(n)
  6.   mon = Val(n(i)) + 1
  7.   If mon > 12 Then
  8.     mon = 1
  9.     ye = 2020
  10.   Else
  11.     ye = 2019
  12.   End If
  13.   arr(i * 2) = 1
  14.   arr(i * 2 + 1) = DateSerial(ye, mon, 0)
  15. Next i
  16. With Sheets("AA")
  17. .Range("H2").Select
  18. .Range("A2:B2" & [a65536].End(3).Row).AutoFilter Field:=1, Operator:=xlFilterValues, Criteria2:=arr
  19. Range("H2") = Application.Subtotal(103, Range("A3:A65536"))
  20. End With
  21. End Sub
复制代码

评分

参与人数 1学分 +3 收起 理由
lsyylw + 3 太强大了

查看全部评分

回复

使用道具 举报

发表于 2020-3-17 12:32 | 显示全部楼层
回复

使用道具 举报

发表于 2020-3-17 12:32 | 显示全部楼层
  1. Private Sub CommandButton1_Click()
  2. Dim n, arr, i&
  3. n = Split(InputBox("Pls inout month"), "/")
  4. ReDim arr(0 To (UBound(n) + 1) * 2 - 1)
  5. For i = 0 To UBound(n)
  6.   arr(i * 2) = 1
  7.   arr(i * 2 + 1) = "2019" & "/" & n(i) & "/" & 1
  8. Next i
  9. With Sheets("AA")
  10.   .Range("A2:B" & [a65536].End(3).Row).AutoFilter Field:=1, Operator:=xlFilterValues, Criteria2:=arr
  11.   .Range("H2") = Application.Subtotal(103, Range("A3:A65536"))
  12. End With
  13. End Sub
复制代码

评分

参与人数 1学分 +3 收起 理由
lsyylw + 3 太强大了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2020-3-17 16:18 | 显示全部楼层

版主你好
想要更改时, 发现执行出现 "编译错误,变数未定义"请问这要如何定义变数?
Operator:=xlFilterValues

回复

使用道具 举报

发表于 2020-3-17 16:34 | 显示全部楼层
不知道你怎么修改的不好判断,是不是设置了强制声明变量?最好发出错的附件上来。
回复

使用道具 举报

发表于 2020-3-18 10:18 | 显示全部楼层
自动筛出的操作界面,不比代码差吧
回复

使用道具 举报

 楼主| 发表于 2020-3-18 10:22 | 显示全部楼层
大灰狼1976 发表于 2020-3-17 16:34
不知道你怎么修改的不好判断,是不是设置了强制声明变量?最好发出错的附件上来。

版主你好
如下图, 一开始想要修改, 就出现这个画面, 是否可再提示, 谢谢
error.jpg
回复

使用道具 举报

发表于 2020-3-18 10:56 | 显示全部楼层
把xlFilterValues改成7试试,不行就发附件上来。
回复

使用道具 举报

 楼主| 发表于 2020-3-18 12:51 | 显示全部楼层
大灰狼1976 发表于 2020-3-18 10:56
把xlFilterValues改成7试试,不行就发附件上来。


你好,
謝謝版主, 我找到用其他方法了, 這比較符合我的需求
  1. Private Sub CommandButton1_Click()
  2. Dim i As Date, j As Date
  3. i = InputBox("請輸入 『開始』 查詢時間 輸入格式 如 2006/1/1")
  4. j = InputBox("請輸入 『結束』 查詢時間 輸入格式 如 2006/1/1")
  5. With Sheets("AA")
  6. .Range("A2:B2" & [a65536].End(3).Row).AutoFilter Field:=1, Criteria1:="<" & j, Operator:=xlAnd, Criteria2:=">" & i
  7. .Range("H2") = Application.Subtotal(103, Range("A3:A65536"))
  8. End With
  9. End Sub
复制代码


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 02:12 , Processed in 0.295948 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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