indexof的用法 字符串indexof方法


接下来,我们将深入探讨实现明细查询功能的代码细节。

我们来分析报表的结构:

报表主要由三个部分组成,如图14.0所示。

左侧为“固定区域”,图14.0中以灰域标示,共包含五列,分别是排序、类、款、项以及科目名称。

中间部分为“指标区域”,图14.0中的蓝域,包含四列数据,分别是指标总金额、指标已用金额、指标可用金额以及计划金额合计。

而右侧则为“支出区域”,图14.0中的橙域,共包括六列数据,涵盖了工资福利支出、对个人和家庭补助支出、公用经费、部门预算项目、专项资金项目以及其他项目。

关于报表分区的图示,请参见图14.0。

【显示明细】按钮的使用方法为,通过鼠标选中相应的单元格,使其成为活动单元格,随后点击显示明细按钮。

关于显示明细按钮的代码功能说明如下:

一、需判断活动单元格是否处于指定的区域内。

二、若单元格在相应区域内,则需执行以下操作:

a. 根据当前活动单元格的排序行,分析出所属的汇总行类型,如合计、类、款、项以及单位等(请参见图13.0)。

b. 根据当前活动单元格的标题决定是否进行项目分类明细数据的查询。

一、第一步的细化说明及相应代码:

▶ 若活动单元格不在报表数据区域内,则不执行任何操作。

▶ 若在“固定区域”,则同样不执行任何操作。

▶ 若在“指标区域”,则查询并获取无项目分类的汇总数据(即计划合计数据)。

▶ 若在“支出区域”,则查询并获取具体的项目分类汇总数据(即与橙色列相对应的项目分类明细数据,请参见图14.0)。

在此过程中,会涉及到对查询表所覆盖的工作表区域的操作,特别是对Range区域对象QueryTable.ResultRange属性的运用。

整个查询表使用的列是固定的,从B列到P列;而使用的行则从第4行开始,至ResultRange.End(xlDown).Row所返回的行号结束。

为了对QueryTable.ResultRange区域进行分类,需要在lib模块中添加三个函数,分别用于获取这三个区域的数据。相关代码如下所示:

关于判断当前活动单元格是否处于指标与支出区域的代码,详见第二步的细化说明及相应代码。

三、关于创建新查询的代码:

通过使用当前工作簿的现有连接,将创建两个新的查询。详细代码将在后续章节中提供。

至此,明细查询功能的所有代码已编写完毕。下一节将对main模块内的CommandButton_Click()函数进行优化,通过函数替换简化其中的内容,以提升阅读体验。

本节示例的相关下载链接如下: