ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 使用ListView制作通用查询录入窗体

使用ListView制作通用查询录入窗体

作者:绿色风 分类: 时间:2022-08-18 浏览:285
楼主
zzmxy
ListView是非常有用,且功能集合较为完善的控件,现在我们要就这个组件,来制作简单的查询及录入窗体。

1. 先插入窗体,并建立如下的窗体,分别有Label1、TextBox1、CommandButton1、ListView1四个控件,
   
 


2. 先为窗体的加载初始化,增加下面的代码,主要是初始化ListView,添加行标内容,并设置ListView的相关属性;
  1. Private Sub UserForm_Initialize()
  2. Dim itm As ListItem
  3. ListView1.ColumnHeaders.Clear
  4. ListView1.ListItems.Clear
  5.     With ListView1
  6.         .ColumnHeaders.Add 1, , Sheets("库存").Cells(1, 1), .Width / 4
  7.         .ColumnHeaders.Add 2, , Sheets("库存").Cells(1, 2), .Width / 4, lvwColumnCenter
  8.         .ColumnHeaders.Add 3, , Sheets("库存").Cells(1, 3), .Width / 4, lvwColumnCenter
  9.         .ColumnHeaders.Add 4, , Sheets("库存").Cells(1, 4), .Width / 4, lvwColumnCenter
  10.         .View = lvwReport
  11.         .Gridlines = True
  12.         .FullRowSelect = True
  13.         .HotTracking = True
  14.         .OLEDragMode = 1
  15.         .OLEDropMode = 1
  16.     End With
  17. TextBox1.SetFocus
  18. End Sub






3. 为按钮添加如下代码,即当在TextBox输入内容后,按“查询”按钮后,将符合查询要求的记录添加ListView里;
  1. Private Sub CommandButton1_Click()
  2.     ListView1.ListItems.Clear '清除listview1中的内容
  3.     With Sheets("库存")
  4.     For i = 2 To .[A65536].End(xlUp).Row
  5.         If InStr(1, .Cells(i, 1).Value, TextBox1.Text, vbTextCompare) Then
  6.         Set itm = ListView1.ListItems.Add() '为listview1控件里面的行添加内容
  7.             itm.Text = .Cells(i, 1) '为行标赋值
  8.             itm.SubItems(1) = .Cells(i, 2)
  9.             itm.SubItems(2) = .Cells(i, 3)
  10.             itm.SubItems(3) = .Cells(i, 4)
  11.         End If
  12.     Next i
  13.     If ListView1.ListItems.Count = 0 Then MsgBox "未查询到相关记录!", 64, "结果"
  14.     End With
  15. End Sub




4. 为ListView的双击添加响应事件,以便将记录录入到单元格中:
  1. Private Sub ListView1_DblClick()
  2.     i = Cells(Rows.Count, 1).End(xlUp).Row + 1
  3.     Cells(i, 1).Value = ListView1.SelectedItem.Text
  4.     Cells(i, 2).Value = ListView1.SelectedItem.SubItems(1)
  5.     Cells(i, 3).Value = ListView1.SelectedItem.SubItems(2)
  6.     Cells(i, 4).Value = ListView1.SelectedItem.SubItems(3)
  7. End Sub




5. 如上代码添加后,效果如下:

 





附件:
zz手把手教你建立ListView通用查询窗体.rar
2楼
清华
又发现好东西了
3楼
清华
录制一个制作全过程 能看的明白
4楼
zzmxy
这个操作过程比较长,如果录制可能容量会过大……
不过,有空的时候我尝试一下吧……
5楼
imaiche
发现好东西了
6楼
zjiakou
7楼
bensonlei
很酷!
8楼
吾股丰登
学习了 谢谢
9楼
刘志文
很不错,学习了!
10楼
联系谁
很不错,学习了!能否增加录入功能
11楼
winnie_xyh
这个真不错,收藏一下,谢谢ZZ老师!
12楼
千梦缘
谢谢分享,值得学习,正好解决录入问题
13楼
luan2000
发现好东西了
14楼
huiwennuan
你太厉害了!能否留个联系方式,要和您学习!
现在真的很有需要!
15楼
huiwennuan
又来学习了,真佩服您,楼主,向向您学习!
16楼
huiwennuan
经典的listview,睡不着再来看一看
17楼
huiwennuan
ZZ,你还经常来社区吗?
18楼
huiwennuan
zz,代码中是否有不足呢?
Private Sub ListView1_DblClick()
    i = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Cells(i, 1).Value = ListView1.SelectedItem.Text
    Cells(i, 2).Value = ListView1.SelectedItem.SubItems(1)
    Cells(i, 3).Value = ListView1.SelectedItem.SubItems(2)
    Cells(i, 4).Value = ListView1.SelectedItem.SubItems(3)
End Sub
这段代码没有指明是将双击选中的内容添加到sheet(库存)还是sheet(记录)。
我试过,如果打开的是库存工作表,则内容加入库存中;反之是加入记录中。
你看看,是不是这样子呢?
能和你取得联系吗?很希望和你学习这个程序。

我自己修改后,想让双击选中的内容指定加入“记录”工作表中,但是没成功。
如果你看到我的回复,希望指出我的错误。代码如下:
Private Sub ListView1_DblClick()
    With Sheets("记录")
    i = Sheets("记录").Cells(Rows.Count, 1).End(xlUp).Row + 1
    .Cells(i, 1).Value = ListView1.SelectedItem.Text
    .Cells(i, 2).Value = ListView1.SelectedItem.SubItems(1)
    .Cells(i, 3).Value = ListView1.SelectedItem.SubItems(2)
    .Cells(i, 4).Value = ListView1.SelectedItem.SubItems(3)
    End With
End Sub
19楼
mgame168
剛好正在找ListView的相關代碼
板大這段代碼符合我的需求感謝~
學習了!!
20楼
wly
感觉挺好的,谢谢分享了**
21楼
wly
感觉挺好的,谢谢分享了**
22楼
wly
运行了一下,说我下标越界,这个是怎么回事呢?
23楼
wly
试了,但是查询窗体中标签显示不出来内容
24楼
有来有往
跟着复制粘贴了一回。不成功。窗体显示代码没有?我怎么做完提示要使用宏而你的就不用了?
25楼
sgh-8
又发现好东西了
26楼
海洋之星
谢谢分享,学习了,哈哈
27楼
文宇
很好
28楼
hg0415
好东西,收藏了!
29楼
ctzl
 

这样加载了控件,进行了引用,还是不行,是什么问题呢!
30楼
zjgzgs
学习了 谢谢

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap