网站首页 > 资源文章 正文
???本文于2023年4月20日首发于本人同名公众号:Excel活学活用,更多文章敬请关注!
前面我们分享了使用ListVeiw进行数据展示,做出“科目汇总表”来(Excel VBA 数据分析展示/ListView控件、Excel VBA 数据分析展示/ListView控件/Combox组合框控件/科目汇总表(2)),今天,我们继续完善按月查询、按一级科目查询功能:
添加了一个CheckBox复选框控件CkbLevelOne,Caption改为“一级科目",如果勾选了,则查询一级科目汇总,否则查询明细科目汇总。
添加了一个命令按钮CmdQuery,Catpion改为“查询”。点击它,根据CmbMonth、CkbLevelOne的值,更新科目汇总表数据,代码如下:
Private Sub CmdQuery_Click()
With Me.LvSum
.ColumnHeaders.Clear
.ListItems.Clear
End With
currMonth = Me.CmbMonth
If Me.CkbLevelOne Then
Call UpdateDataTopLevel
Else
Call UpdateData
End If
Me.LvSum.Refresh
End Sub
代码比较简单,解析一下:
首先,把LvSum的表头字段、行记录都给清除了,否则多次执行数据就会重复。
然后,把模块级变量currMonth 的值更新为月份列表框的当前值。
接着,根据CheckBox的勾选状态来确定运行不同过程。
最后,刷新一下LvSum,否则可能会有重影。
然后,把代码进行优化:
一、把UserForm_Initialize()里面数据处理的部分拎出来做一个单独的过程,Private Sub UpdateData(),用于汇总“明细科目",供其他过程调用。
二、复制Private Sub UpdateData()模块,稍加修改变成另一个过程,Private Sub UpdateDataTopLevel(),用于汇总“一级科目",基本上跟UpdateData()一样,仅做了细微改动,大的框架结构是完全一样的,其实也可以合并到一个过程里,这里暂时就这样简单处理,我们也可以看到,就作了以下改动:
"科目_编码"改为“1级",后面根据字典的Keys来取得科目编码、科目名称的代码都不需要修改,
DicAccount(arrDetail(i, Pxy(TbTitle, "科目_编码", 2))) = 1
DicAccount(arrDetail(i, Pxy(TbTitle, "1级", 2))) = 1
科目代码的比较,把科目代码取前4位就是一级代码:
For j = 1 To UBound(arrSelect, 1)
If arrSelect(j, PosCode) = arrCode(i - 1) Then
For j = 1 To UBound(arrSelect, 1)
If Left(arrSelect(j, PosCode), 4) = arrCode(i - 1) Then
这里我觉得值得注意的是,我们要善于发现数据的规律,而且我们在设计数据的时候,要保持相对一致性,比如科目编码和科目名称的连接,我们中间统一用“_",诸如此类,我就不多啰嗦了,大家自己摸索、体会吧。
三、修改添加表头的一处错误,数组的下标不对:
For i = 0 To UBound(sTbTitle) '添加表头,金额列设置右对齐
If sTbTitle(1, i) <> "" Then
For i = 0 To UBound(sTbTitle) '添加表头,金额列设置右对齐
If sTbTitle(i) <> "" Then
由于原来的过程中,有On Error Resume Next语句,在运行的时候就没有报错,后来在新的UpdateData过程中,没有加这条语句,它就报错了。这里用if语句主要是避免表头字段出现空值,实际上也可以不用if判断,如果能确定数组里没有空值的话。
四、对按明细、按一级查询,分别设置LvSum的表头字段宽度,同时Usf_Sum的宽度跟随调整。
五、当我们点选CmbMonth月份列表框的时候,可以使用它的Change事件来即时更新LvSum的数据,这里我们没有这样做。如果需要这样做的话,可以把CmdQuery下的代码复制到CmbMonth的Change事件里,或者输入代码Call CmdQuery_Click,就是去点击一下查询按钮。我把相关代码放到其Change事件里,但是注释掉了。
其他好象就没什么了,就这样吧。
好,今天就分享到这,我们下期再会。
☆猜你喜欢☆
Excel VBA 这样酷炫的日期控件,你不想要吗?
Excel VBA 最简单的收发存登记系统
Excel 公式函数/数据验证/动态下拉列表
Excel VBA 文件批量改名
Excel 公式函数/数据透视表/固定资产折旧计提表!
Excel VBA 输入逐步提示/TextBox+ListBox
????本文于2023年4月20日首发于本人同名公众号:Excel活学活用,更多文章敬请关注!
- 上一篇: Web 存储技术(储存web格式怎么设置参数)
- 下一篇: umi监听数据深层变化(mq监听)
猜你喜欢
- 2024-10-24 2 万字长文详解 10 大多线程面试题|原力计划
- 2024-10-24 选择合适的 MySQL 日期时间类型来存储你的时间
- 2024-10-24 随笔:MySQL又死锁了,看我一顿分析
- 2024-10-24 AI办公自动化:批量合并多个Excel表格的数据并汇总
- 2024-10-24 一个诡异的MySQL查询超时问题,差点导致一个P0事故
- 2024-10-24 关于接口规范(关于接口的使用,说法错误的是)
- 2024-10-24 PUT 与 PATCH & PUT 与 POST(put与post区别)
- 2024-10-24 TiDB 查询优化及调优系列(五)调优案例实践
- 2024-10-24 一文读懂Go结构体标签(go结构体默认值)
- 2024-10-24 Git同步原始仓库到Fork仓库中(git 同步)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)