VBA学习(63):Excel VBA 数据分析展示/ListView控件/Combox组合框控件/CheckBox复选框控件/科目汇总表

news2024/9/22 15:45:09

前面我们分享了使用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事件里,但是注释掉了。

其他好象就没什么了,就这样吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2102738.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

codesys进行控制虚拟轴运动时出现的一些奇怪bug的解释

codesys进行控制虚拟轴运动时出现的一些奇怪bug的解释 问题描述第一个奇怪的bug&#xff1a;新建的工程没有SoftMotion General Axis Pool选项第二个奇怪的bug&#xff1a;在新建工程SoftMotion General Axis Pool选项时&#xff0c;无法手动添加第三个奇怪的bug&#xff1a;虚…

Spring源码之refresh

1.refesh的核心介绍 在 Spring 框架中&#xff0c;refresh 主要用于刷新应用上下文。这一过程涉及多个重要的步骤&#xff0c;确保 Spring 容器的状态更新、bean 的加载以及资源的初始化。 refresh 方法的主要功能 初始化上下文&#xff1a; refresh 方法会初始化应用上下文&…

【项目实战】智能机械臂协同视觉辅助仓储物流管控平台

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

9月4日星期三今日早报简报微语报早读

9月4日星期三&#xff0c;农历八月初二&#xff0c;早报微语早读。 1、全球第二批100个地质遗产地公布&#xff0c;中国乌海、自贡、桂林等3地入选&#xff1b; 2、我国科学家在超高纯石墨领域取得重大突破&#xff1b; 3、2024上海百强企业榜单发布&#xff1a;入围门槛105…

小土堆pytorch

anaconda安装 pip list 可以看有哪些package包 nvidia-smi查看显卡的状态 安装pytorch 检验pytorch是否安装成功&#xff0c;以及是否pytorch是否可以使用gpu。 (1)查看conda版本 conda --version 或 conda -V (2)更新conda&#xff08;将conda自身更新到最新版本&#xff09; …

算法打卡 Day28(回溯算法)-组合总数 + 组合总数 Ⅱ+ 电话号码的字母组合

文章目录 Leetcode 17-电话号码的字母组合题目描述解题思路 Leetcode 39-组合总数题目描述解题思路 Leetcode 216-组合总数 Ⅲ题目描述解题思路 Leetcode 17-电话号码的字母组合 题目描述 https://leetcode.cn/problems/letter-combinations-of-a-phone-number/description/ …

Flink问题记录

尚硅谷Flink1.17问题记录 上手pom依赖循环递归WordCountStreamDemo中readTextFile是deprecated&#xff08;强烈反对的&#xff09; 上手 pom依赖循环递归 pom依赖中&#xff1a; <dependency><groupId>org.apache.flink</groupId><artifactId>flink…

J.U.C Review - 线程池原理/源码解析

文章目录 为什么要使用线程池ThreadPoolExecutor构造方法解析常见的阻塞队列实现及其特性阻塞队列在实际应用中的适用场景分析自定义ThreadFactory和RejectedExecutionHandler实际使用中的示例与代码片段 线程池的状态线程池的任务处理流程线程复用的实现四种常见的线程池newCa…

uniapp 自定义微信小程序 tabBar 导航栏

背景 做了一个校园招聘类小程序&#xff0c;使用 uniapp vue3 uview-plus pinia 构建&#xff0c;这个小程序要实现多角色登录&#xff0c;根据权限动态切换 tab 栏文字、图标。 使用pages.json中配置tabBar无法根据角色动态配置 tabBar&#xff0c;因此自定义tabBar&…

达梦数据库的系统视图v$ifun

达梦数据库的系统视图v$ifun 达梦数据库&#xff08;DM Database&#xff09;中V$IFUN 视图是用于检测函&#xff08;Function&#xff09;信息的。 在 Oracle 数据库中&#xff0c;类似的系统视图被称为动态性能视图&#xff0c;但在达梦数据库中并没有与 Oracle 一一对应的…

QT(1)-.pro 文件 转成.vcxproj 工程

1.qtcreator创建的文件转换成vs2019可以打开的。 1.QT webenginewidgets unknown modules webenginewidgets 要用 MSVC2017 &#xff0c;用minGW 32构建

使用Django身份验证系统

【图书介绍】《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) Django 5框…

windows中Selenium安装最新版Chrome WebDriver

windows中Selenium安装最新版Chrome WebDriver 需求&#xff1a;需要使用 selenium 对某个网页进行截图 文章目录 windows中Selenium安装最新版Chrome WebDriver一、查看Chrome版本二、找到对应的chromedriver版本三 安装3.1 确定google安装路径3.2 将下载的google driver 解压…

解决bug: RuntimeError: Address already in use,一个linux下pytorch多卡训练tcp端口占用的bug

时间&#xff1a;2024.9.3 1&#xff09;bug&#xff1a; self._store TCPStore( # type: ignore[call-arg] RuntimeError: Address already in use2&#xff09;原因分析 linux下pytorch多卡训练深度学习模型&#xff0c;训练中途暂停训练&#xff0c;但仍有进程占用某个端…

字典树Trie(专项复习)

一.P8306 【模板】字典树 题目思路:字典树的板子题,熟练写出insert函数(建树),以及query函数(查询)即可. 代码实现: #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; typedef long long ll; #define N 3000005 #define P 131 ll f1[N]; s…

华为云征文|Flexus云服务X实例安装ODBC驱动,在ODBC中建立MySQL数据库连接,通过QT连接云数据库

引出 4核12G-100G-3M规格的Flexus X实例使用测评第2弹&#xff1a;Flexus云服务X实例安装ODBC驱动&#xff0c;在ODBC中建立MySQL数据库连接&#xff0c;通过QT连接云数据库 什么是Flexus云服务器X实例 官方解释&#xff1a; Flexus云服务器X实例是新一代面向中小企业和开发…

第140天:内网安全-横向移动局域网ARP欺骗DNS劫持钓鱼中间人单双向

目录 案例一&#xff1a;局域网&工作组-ARP原理-断网限制-单向 案例二&#xff1a;局域网&工作组-ARP欺骗-劫持数据-双向 案例三&#xff1a;局域网&工作组-DNS 劫持-钓鱼渗透-双向 案例一&#xff1a;局域网&工作组-ARP原理-断网限制-单向 原理&#xff1…

pytorch利用简单CNN实现葡萄病虫害图片识别

1 前言 之前我开发了一个葡萄病虫害的可视化系统&#xff0c;最近就想给这个系统增加2个功能&#xff0c;一个是对接一个AI助手&#xff0c;可以进行葡萄病虫害的咨询&#xff0c;直接对接千问大模型&#xff0c;这个在之前的博文里已经介绍过对接方法了&#xff0c;第二个是做…

ChatGPT与R语言融合技术在生态环境数据统计分析、绘图、模型中的实践与进阶应用

自2022年GPT&#xff08;Generative Pre-trained Transformer&#xff09;大语言模型的发布以来&#xff0c;它以其卓越的自然语言处理能力和广泛的应用潜力&#xff0c;在学术界和工业界掀起了一场革命。在短短一年多的时间里&#xff0c;GPT已经在多个领域展现出其独特的价值…

【JavaWeb】JDBCDruidTomcat入门使用

本章使用技术版本&#xff1a; Tomcatv10.1.25 关于javaweb相关的其他技术&#xff0c;比如tomcat和maven&#xff0c;在我的主页记录了笔记&#xff0c;ajax我用的是本地笔记以后再考虑上传&#xff0c;前端三板斧我用的菜鸟教程文档 JDBC 初识 JDBC概念 JDBC 就是使用Jav…