
本文于2023年4月21日首发于本人同名公众号:Excel活学活用,更多文章敬请关注!
书接上回,关于使用ListVeiw控件制作科目汇总表,我们已经分享了多期内容:
Excel VBA 数据分析展示/ListView控件
Excel VBA 数据分析展示/ListView控件/Combox组合框控件/科目汇总表(2)
Excel VBA 数据分析展示/ListView控件/Combox组合框控件/CheckBox复选框控件/科目汇总表(3)
但是,还没完,本期我们继续完善查询功能:
1、双击科目汇总表科目,显示该科目的明细数据。
2、如果是明细科目,则显示该科目的明细数据,如果是一级科目,则显示该一级科目下所有明细科目的数据。
3、双击后,显示“返回"按钮,隐藏月份、查询等控件。
4、点击“返回",则界面回到原来状态,即隐藏明细表,显示汇总表,隐藏“返回”按钮,显示其他被隐藏的按钮。

下面简单说明一下制作过程:
添加了一个命令按钮CmdReturn,Caption改为“返回”。代码如下:
Private Sub CmdReturn_Click() Me.CmdReturn.Visible = False Me.LvDetail.Visible = False Me.LvSum.Visible = True Me.Frame1.Visible = TrueEnd Sub
代码比较简单,就是运用控件的Visible属性来显示与隐藏控件。
添加了一个框架控件Frame1,把月份、查询等控件放到框架里,便于统一显示与隐藏。
添加LvSum的Dubleclick事件,显示相应明细数据,代码如下:
Private Sub LvSum_DblClick() Dim AccCodeOfDetail As String AccCode = Me.LvSum.SelectedItem.Text Me.LvSum.Visible = False Me.CmdReturn.Visible = True Me.CmdReturn.Left = Me.Frame1.Left Me.CmdReturn.Top = Me.Frame1.Top + Me.Frame1.Height - Me.CmdReturn.Height Me.Frame1.Visible = False arrWidthDetail = Array(60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60) With LvDetail .View = lvwReport 'listview控件的显示外观 .Gridlines = True '是否有表格线,True有表格线 '.Sorted = True '是否排序 '.CheckBoxes = True '是否显示勾选框 .LabelEdit = lvwManual .FullRowSelect = True '是否整行选跳 .ForeColor = vbBlue '字体颜色 .Visible = True .ListItems.Clear .ColumnHeaders.Clear '添加表头 For i = 1 To UBound(TbTitle, 2) '添加表头,金额列设置右对齐 If TbTitle(1, i) <> "" Then If i = 0 Then .ColumnHeaders.Add , , TbTitle(1, i), arrWidthDetail(i) ElseIf InStr("/8/6/7/9/", CStr(i)) Then .ColumnHeaders.Add , , TbTitle(1, i), arrWidthDetail(i), lvwColumnRight Else .ColumnHeaders.Add , , TbTitle(1, i), arrWidthDetail(i) End If End If LvWidth = LvWidth + arrWidthDetail(i) Next For i = 1 To UBound(arrSelect, 1) If Me.CkbLevelOne Then AccCodeOfDetail = Left(arrSelect(i, PosCode), 4) Else AccCodeOfDetail = arrSelect(i, PosCode) End If If AccCodeOfDetail = AccCode Then Set LvItem = .ListItems.Add LvItem.Text = arrSelect(i, 1) For j = 2 To UBound(arrSelect, 2) LvItem.SubItems(j - 1) = arrSelect(i, j) Next End If Next .Top = Me.LvSum.Top .Left = Me.LvSum.Left .Width = Me.LvSum.Width .Height = Me.LvSum.Height End WithEnd Sub
代码解析:
1、定义一个变量:AccCodeOfDetail 用来取得明细数据表中的科目代码,根据是否是一级科目,取不同的值。
2、把点击的项目(Selecteditem)的第一列(科目编码)的值赋给AccCode(AccCode = Me.LvSum.SelectedItem.Text),据以在arrSelect中提取数据。
3、显示、隐藏一些控件,调整控件位置。
4、arrWidthDetail 用来设置Lvdetail的列宽,根据需要调整等号右侧Array里的元素的值,这里只是简单演示,没有特别设置。
5、对LvDetail进行操作,添加表头、明细数据、大小、位置等。
好,今天就分享到这,我们下期再会。
☆猜你喜欢☆

本文使用 文章同步助手 同步,本文于2023年4月21日首发于本人同名公众号:Excel活学活用,更多文章敬请关注!