目录
示例
在VBA编程中,经常需要反复实现某种相同的数据处理,而其数据处理的触发机制却是多样化的,可能通过事件,也可能通过单击按钮。如图所示,该表为某公司2009年和2010
年的工资明细,制作了查询表,插入了两个按钮,通过单击这两个按钮分别查询2009年与2010年按部门汇总的工资表。
示例数据下载
https://download.csdn.net/download/ngbshzhn/20298070
代码
编写一个带有参数的汇总过程,以年份作为参数传递。为两个按钮分别编写代码,通过传递不同的年份实现不同的汇总。
Option Explicit
Sub sum2009()
Call MySum(2009)
End Sub
Sub sum2010()
Call MySum(2010)
End Sub
Sub MySum(iYear As Integer)
Dim shtSum As Worksheet '汇总表
Dim shtData As Worksheet '数据表
Dim arrSum '汇总数组
Dim arrData '数据数组
Dim rowSum As Long '汇总表行号
Dim rowData As Long '数据表行号
Dim rowNew As Long '汇总表总行数
Dim colN As Long
Dim sDept As String '部门
Dim bln As Long '查找标识变量
Set shtData = Sheets("sheet1")
Set shtSum = Sheets("sheet2")
'数据数组赋值
arrData = shtData.Range("A1").CurrentRegion.Value
rowNew = 0
'汇总数组第一维下限与原始数组一致
ReDim arrSum(Range("C1").Column To Range("P1").Column, 1 To 1)
For rowData = 2 To UBound(arrData)
If Year(arrData(rowData, UBound(arrData, 2))) = iYear Then
sDept = arrData(rowData,