ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3897|回复: 21

[分享] VBA窗体学习笔记一:Listview控件

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-4-12 11:25 | 显示全部楼层 |阅读模式
一、概况
        Listview控件,它可以用多种视图方式显示项目的控件。由于其外形美观而且非常实用,所以使用频率很高。
        Listview控件需要添加到控件工具箱才能插入和使用。在工具箱,右键附加控件:找到Microsoft ListView Control,version 6.0。
        如果找不到的话需要到网上下载MSCOMCTL.OCX,同时也要看看自己的office是多少位的,如果是64位的,那就得换成32位的office。
        如果运行的时候弹出“找不到工程或库",解决方法:在工具-引用,把有”missing”,“丢失”,“找不到“字眼的引用取消勾选。
        Listview有两大部分组成,一部分是列标题ColumnHeaders,另一部分是项目ListItems
            1、ColumnHeaders:标题,控件第一行;
            2、ListItems:项目列表,表示除标题外的任何行,包含Text和ListSubItems。
                (1)、Text:文本,项目列表的第一列;
                (2)、ListSubItems:子项列表(是集合),用来表示除第一列Text之外的其他SubItems的集合。
                    ①、SubItems:子项目(是一个数组),项目列表从第二列开始往后,每列分别表示为SubItems(1)、SubItems(2)、SubItems(3)... ...。
            总结:Listview由ColumnHeaders和ListItems组成,ListItems由Text和ListSubItems组成,ListSubItems由多个SubItems组成。


评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-12 11:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
二、常用属性。Listview控件属性的设置代码,一般写在窗体初始化事件(Initialize)中。
        1、AllowColumnReorder:允许列重新排序。设置或获取该属性值,用户是否可以拖动列标题来对控件中的列重新排序。
            Me.ListView1.AllowColumnReorder = True  '值为1,允许拖动
            Me.ListView1.AllowColumnReorder = False  '值为0(默认值),不许拖动
        2、Appearance:外观。设置或获取该属性值,ListView控件的外观。
            Me.ListView1.Appearance = cc3D '值为1(默认值),ListView控件外观设为3D形状
            Me.ListView1.Appearance =  ccFlat  '值为0,ListView控件外观设为平面状
        3、BackColor:背景色。设置或获取该属性值,ListView控件的背景颜色(不含标题)
            Me.ListView1.BackColor = RGB(120, 120, 120)
        4、BorderStyle:边框样式。设置或获取该属性值,ListView控件的边框样式。
            Me.ListView1.BorderStyle = ccFixedSingle '值为1,固定单线框
            Me.ListView1.BorderStyle = ccNone '值为0(默认值),无线框
            BorderStyle属性在Appearance属性设为cc3D(3D形状)时将失效,即要设置边框样式,控件外观就要设为平面形状。
        5、CheckBoxes:复选框。设置或获取该属性值,ListView控件的复选框状态。
            Me.ListView1.CheckBoxes = True '值为1,显示复选框
            Me.ListView1.CheckBoxes = False '值为0(默认值),隐藏复选框
        6、ControlTipText:控件提示文本。设置或获取该属性值,鼠标移到ListView控件上后,显示的提示信息
            Me.ListView1.ControlTipText = "提示信息"  '该属性设置的提示信息将在一行显示,换行回车符都视为无效:Chr(10)、Chr(13)、vbNewLine、vbCrLf
        7、Enabled:可操作性。设置或获取该属性值,ListView控件的可操作性。
            Me.ListView1.Enabled =  True '值为1(默认值),ListView控件可以操作
            Me.ListView1.Enabled = False '值为0,ListView控件不可以操作,ControlTipText控件提示文本也不被显示
        8、FlatScrollBar:水平滚动条。设置或获取该属性值,ListView控件的水平滚动条。
            Me.ListView1.FlatScrollBar = True '值为1,显示水平滚动条
            Me.ListView1.FlatScrollBar = False '值为0(默认值),隐藏水平滚动条(在Excel LTSC2021里也有滚动条,只是和True时形状不一样而已)
        9、Font:字体。设置或获取该属性值,ListView控件的文字特征,包括字体,字号大小,斜体,下划线等。
            Me.ListView1.Font.Name = "宋体"  '字体名称
            Me.ListView1.Font.Size = 14  '字体大小
            Me.ListView1.Font.Italic = True  '斜体
            Me.ListView1.Font.Bold = True  '粗体
            Me.ListView1.Font.Underline = True  '下划线
            Me.ListView1.Font.Strikethrough = True  '删除线
            不常用的两个:Me.ListView1.Font.Weight(灰度)、Me.ListView1.Font.Charset(字符集)
        10、ForeColor:前景颜色。设置或获取该属性值,ListView控件文字的前景颜色(不含标题)。
            Me.ListView1.ForeColor = RGB(125, 125, 0)
            Me.ListView1.ForeColor = vbBlue
            不能用ColorIndex方法:Me.ListView1.ForeColor.ColorIndex = 3 会出现无效限定符提示
        11、FullRowSelect:整行选择。设置或获取该属性值,ListView控件的整行选择状态。
            Me.ListView1.FullRowSelect = True  '值为1,整行选择,被选中的行所有列高亮显示
            Me.ListView1.FullRowSelect = False  '值为0(默认值),文本选择,被选中的只有第一列高亮显示
        12、Gridlines:网格线。设置或获取该属性值,ListView控件是否显示网格线。
            Me.ListView1.Gridlines = True  '值为1,显示网格线
            Me.ListView1.Gridlines = False  '值为0(默认值),隐藏网格线
        13、Height:高度。设置或获取该属性值,ListView控件的高度。
            Me.ListView1.Height = 150
        14、Width:宽度。设置或获取该属性值,ListView控件的宽度。
             Me.ListView1.Width = 450
        15、HelpContextID:帮助上下文ID。指定由 HelpFile 属性设置指定的自定义“帮助”文件中某个主题的上下文 ID。 Long 型,可读/写。
             Me.ListView1.HelpContextID = 1
        16、HideColumnHeaders:隐藏列标题。设置或获取该属性值,是否隐藏ListView控件列标题(全部)。
             Me.ListView1.HideColumnHeaders = True  '值为1,隐藏列标题
             Me.ListView1.HideColumnHeaders = False  '值为0(默认值),显示列标题
        17、HideSelection:隐藏所选内容。设置或获取该属性值,指定控件没有焦点时所选文本是否保持高亮显示。
             Me.ListView1.HideSelection = True  '值为1(默认值),除非ListView控件有焦点,否则不会突出显示所选文本。
             Me.ListView1.HideSelection = False  '值为0,始终突出显示所选文本。
        18、HotTracking:热跟踪。设置或获取该属性值,该值指示当鼠标指针经过某个项或子项的文本时,文本的外观是否变为超链接的形式。
             Me.ListView1.HotTracking = True  '值为1,具有超链接的外观
             Me.ListView1.HotTracking = False  '值为0(默认值),不具有超链接的外观
             如果属性 CheckBoxes 设置为 True,则 HotTracking 属性无效(微软官方说明,Excel LTSC2021实测有效)。
        19、HoverSelection:悬停选择。设置或获取该属性值,该值指示当鼠标指针在项上停留几秒钟时是否自动选定该项。
             Me.ListView1.HoverSelection = True '值为1,自动选定
             Me.ListView1.HoverSelection = False  '值为0(默认值),不自动选定
        20、LabelEdit :编辑标签。设置或获取该属性值,该值指示用户是否可以编辑控件中项的标签。
             Me.ListView1.LabelEdit = tvwAutomatic  '值为0(默认值),自动的,可以编辑
             Me.ListView1.LabelEdit = tvwManual  '值为1,手册,不可以编辑
        21、LabelWrap :标签换行。设置或获取该属性值,该值指示当项作为图标在控件中显示时,项标签是否换行。
             Me.ListView1.LabelWrap = True  '值为1(默认值),换行
             Me.ListView1.LabelWrap = False  '值为0,手册,不换行
        21、Left:左边。设置或获取该属性值,控件距离主窗口(容器)左边界的距离。
             Me.ListView1.Left = 10
        22、Top:顶部。设置或获取该属性值,控件距离主窗口(容器)上边界的距离。
             Me.ListView1.Top = 10
        23、MousePointer:鼠标指针。设置或获取该属性值,鼠标的形状
             Me.ListView1.MousePointer = ccDefault    '值为0(默认值),默认形状
             Me.ListView1.MousePointer = ccArrow    '值为1,箭头,和值4、99形状一样
             Me.ListView1.MousePointer = ccCross    '值为2,十字
             Me.ListView1.MousePointer = ccIBeam   '值为3,光标
             Me.ListView1.MousePointer = ccIcon   '值为4,箭头,和值1、99形状一样
             Me.ListView1.MousePointer = ccSize   '值为5,带箭头的十字,和值15形状一样           
             Me.ListView1.MousePointer = ccSizeNESW   '值为6,带箭头的/
             Me.ListView1.MousePointer = ccSizeNS   '值为7,带箭头的|
             Me.ListView1.MousePointer = ccSizeNWSE   '值为8,带箭头的\
             Me.ListView1.MousePointer = ccSizeEW   '值为9,带箭头的一
             Me.ListView1.MousePointer = ccUpArrow   '值为10,向上箭头
             Me.ListView1.MousePointer = ccHourglass   '值为11,蓝色转动的圆圈
             Me.ListView1.MousePointer = ccNoDrop   '值为12,红色圆圈加斜杠
             Me.ListView1.MousePointer = ccArrowHourglass   '值为13,蓝色转动的圆圈,和值11形状一样,但要小一些
             Me.ListView1.MousePointer = ccArrowQuestion   '值为14,箭头加问号
             Me.ListView1.MousePointer = ccSizeAll   '值为15,带箭头的十字,和值5形状一样
             Me.ListView1.MousePointer = ccCustom   '值为99,箭头,和值1、4形状一样
             注:以上鼠标指针在Office LTSC 2021(64位)+Windows 10 企业版 LTSC (64位) 版本测试获得。
        23、MultiSelect:多选。设置或获取该属性值,该值指示是否可以选择多个项。
             Me.ListView1.MultiSelect = True  '值为1,可以一次选择控件中的多个项
             Me.ListView1.MultiSelect = False  '值为0(默认值),不能一次选择控件中的多个项
             注:(1)、单条选择:按住 Ctrl 键,同时单击要选择的项目;
                    (2)、连续选择:先选择第一个项目,然后在按住 SHIFT 键的同时单击要选择的最后一项。
        24、OLEDragMode:对象拖动模式。设置或获取该属性值,该值指示一个控件向另外一个控件拖动项的模式。
             Me.ListView1.OLEDragMode = ccOLEDragAutomatic  '值为1,自动拖动
             Me.ListView1.OLEDragMode = ccOLEDragManual  '值为0(默认值),手动拖动
        25、OLEDropMode :对象放置模式。设置或获取该属性值,该值指示一个控件接受另外一个控件拖动项的放置模式。
             Me.ListView1.OLEDropMode = ccOLEDropManual  '值为1,手动放置
             Me.ListView1.OLEDropMode = ccOLEDropNone  '值为0(默认值),无放置
             注:OLEDragMode和OLEDropMode两个参数设置好了需要在相关事件(如:OLEDragDrop、OLEStartDrag等)中写代码才会有拖放效果。
        26、Picture:图片。设置或获取该属性值,该值指示控件的背景图片。
             Me.ListView1.Picture = LoadPicture("D:\ico\BZ_B_8.JPG")
        27、PictureAlignmen:图片对齐方式。设置或获取该属性值,该值指示当背景图片与控件大小不一致时,两者的对齐关系。
             Me.ListView1.PictureAlignment = lvwTopLeft  '值为0(默认值),左上角对齐
             Me.ListView1.PictureAlignment = lvwTopRight '值为1,右上角对齐
             Me.ListView1.PictureAlignment = lvwBottomLeft '值为2,左下角对齐
             Me.ListView1.PictureAlignment = lvwBottomRight '值为3,右下角对齐
             Me.ListView1.PictureAlignment = lvwCenter '值为4,居中
             Me.ListView1.PictureAlignment = lvwTile '值为5,平铺
        28、Sorted:排序。设置或获取该属性值,该值指示控件是否允许排序。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-12 11:28 | 显示全部楼层
三、常用方法

        1、Add:添加ColumnHeaders或ListItems。
            (1)、 添加ColumnHeaders(列标题)。       
        语法:ListView1.ColumnHeaders.Add 序号(列号),key(一列的唯一标识),列标题,列宽度,列内容的对齐方式,使用的图标序号。
        有六个参数:
        ①序号:要设置第几列
        ②key(一列的唯一标识):自己设置一个值标记这一列,比如设置一个字母。
        ③列标题:列标题具体内容
        ④列宽度:列宽,可以按ListView宽度除以列数,比如写为 “ListView1.Width / 3”
        ⑤对齐方式:有三种,lvwColumnCenter居中对齐,lvwColumnLeft左对齐,lvwColumnRight右对齐,其中第一列只能左对齐而不能其它对齐。
        ⑥使用的图标序号:从Imagelist控件获取图片并显示。
            例:
        手动添加标题
        Me.ListView1.ColumnHeaders.Add 1, "Q", "QQ号", ListView1.Width / 3,lvwcolumnleftter
        Me.ListView1.ColumnHeaders.Add 2, "N", "昵称", ListView1.Width / 3, lvwcolumncenter
        Me.ListView1.ColumnHeaders.Add 3, "D", "地区", ListView1.Width / 3, lvwcolumnright
        单元格区域添加标题
        brr = Sheet1.[C1:J1]
        Me.ListView1.ColumnHeaders.Add 1, "T1", brr(1, 1), ListView1.Width / UBound(brr, 2), lvwcolumnleftter
        For i = 2 To UBound(brr, 2)
                Me.ListView1.ColumnHeaders.Add i, "T" & i, brr(1, i), ListView1.Width / UBound(brr, 2), lvwColumnCenter
        Next
        Me.ListView1.View = 3 '报表方式显示
            (2)、  添加ListItems(项目列表)。
        使用SubItems数组添加数据,注意:SubItems(1)为第二列,第一列为Text。添加数据时,首先要添加一ListItems是行对象的集合,然后使用循环,
        把单元格数值赋值给Subitem。Set ITM = ListView1.ListItems.Add(),相当于ListView末尾添加一空行。
            例:以Sheet1表C:J列(共8列)为例
        For i = 1 To UBound(brr)
            Set itm = Me.ListView1.ListItems.Add()
            itm.Text = brr(i, 1)
            For j = 2 To UBound(brr, 2)
                itm.SubItems(j - 1) = brr(i, j)
            Next
        Next
            (3)、  使用Listsubitems集合添加数据,与SubItems不同,Listsubitems在添加行对象时,直接可以添加一行,然后添加的每一行使用对行对象增加一行的方式进行赋值。
        last = Sheet1.Cells(Rows.Count, "C").End(xlUp).Row
        brr = Sheet1.Range("C2:J" & last).Value
        For i = 1 To UBound(brr)
            Set lst = Me.ListView1.ListItems.Add(Text:=brr(i, 1))
            For j = 2 To UBound(brr, 2)
                Set li = lst.ListSubItems.Add(Text:=brr(i, j))
            Next
        Next i
        注意:SubItems和ListSubItems的区别,SubItems是一个string类型的数组,ListSubItems是一个集合。
        2、ListItems:项目列表,设置或获取项目列表值
            (1)、获取Text:arr(1) = Me.ListView1.ListItems(i).Text、设置Text:Me.ListView1.ListItems(i).Text = "66.56"
            (2)、获取SubItems:arr(j) = Me.ListView1.ListItems(i).SubItems(j - 1)、设置SubItems:Me.ListView1.ListItems(i).SubItems(j - 1) = "66.56"
            例:从列表导出数据至字典:导出复选框为True的行数据。
        Dim d As Object, arr(), i&, j&
        Set d = CreateObject("Scripting.Dictionary")
        If Me.ListView1.ListItems.Count = 0 Then Exit Sub
        For i = 1 To Me.ListView1.ListItems.Count
            If Me.ListView1.ListItems(i).Checked Then
                ReDim arr(1 To Me.ListView1.ColumnHeaders.Count)
                arr(1) =  Me.ListView1.ListItems(i).Text
                For j = 2 To Me.ListView1.ColumnHeaders.Count
                    arr(j) = Me.ListView1.ListItems(i).SubItems(j - 1)
                Next
                k = k + 1
               d(k) = arr
            End If
        Next
        If k = 0 Then
            MsgBox "无检索数据!"
            Exit Sub
        End If
        3、Clear:清除数据
        Me.ListView1.ColumnHeaders.Clear '清空所有行,包括标题
        Me.ListView1.ListItems.Clear '清空项目(除标题外所有行)
        4、Remove:移除数据,逐行或逐列移除数据。移除行时不判断复选框,如果当前行不是最后一行移除后下一行成为当前行,否则最后一行成为当前行。
        Me.ListView1.ListItems.Remove Me.ListView1.SelectedItem.Index '移除当前选中的行(单行)
        Me.ListView1.ColumnHeaders.Remove "Q" '移除列用之前设置的key来标识,移除key是Q的列数据
        5、SelectedItem:所选项目,返回鼠标点击的信息。
        Me.ListView1.SelectedItem '表示 正在选择的行,返回结果和.Texe一样,第一列的值,
        Me.ListView1.SelectedItem.Text '第一列的值
        Me.ListView1.SelectedItem.SubItems(1) '第二列的值,也可用ListSubItems(1)
        Me.ListView1.SelectedItem.SubItems(2) '第三列的值,也可用ListSubItems(2)
        Me.ListView1.SelectedItem.Checked  '返回选中行的复选框状态
        Me.ListView1.SelectedItem.Index  '返回选中行号
        Me.ListView1.SelectedItem.Top  '返回选中行与控件顶部的距离
        Me.ListView1.SelectedItem.Left  '返回选中行与控件左边界的距离
        Me.ListView1.SelectedItem.Height  '返回选中行的高度
        Me.ListView1.SelectedItem.Width  '返回选中行的宽度
        6、Checked:检查,判断指定行(i)的复选框是否被选中,True(值等于1)表示选中,False(值等于0)表示没选中。
        复选框可以多行被选中,用于列表的多选操作。
        Me.ListView1.ListItems(i).Checked = True
        7、Selected:选择,判断指定行(i)是否为当前选中行,True(值等于1)表示是当前行,False(值等于0)不是当前行。
        Checked和Selected不同在于Checked是多选行,而Selected是单选行,也就是任何时候只有一行被Selected。
        Me.ListView1.ListItems(i).Selected
        8、Count:统计行或列总数
        Me.ListView1.ListItems.Count  '返回列表总行数,不包括标题ColumnHeaders
        Me.ListView1.ColumnHeaders.Count  '返回列表总列数,包括Text和SubItems

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-12 11:29 | 显示全部楼层
四、常用事件
        1、AfterLabelEdit:标签编辑后。第一列文本值被手动修改后触发,代码修改无效。
        参数:Cancel值等于False(值为0)接受修改(默认值),等于True(值为1)不接受修改
                  NewString修改后的值
        Private Sub ListView1_AfterLabelEdit(Cancel As Integer, NewString As String)
            If MsgBox("文本值已被已改为:" & NewString & Chr(10) & "是否接受修改?", vbOKCancel, "") = vbCancel Then Cancel = 1
        End Sub
        2、BeforeLabelEdit:标签编辑前。第一列文本值手动修改前触发,代码修改无效。
        参数:Cancel值等于False(值为0)接受修改(默认值),等于True(值为1)不接受修改
        Private Sub ListView1_BeforeLabelEdit(Cancel As Integer)
            If MsgBox("是否确定需要修改文本值?", vbOKCancel, "") = vbCancel Then Cancel = 1
        End Sub
        3、Click:点击。鼠标点击控件ListItems(除标题外)触发。
        Private Sub ListView1_Click()
            Debug.Print Me.ListView1.SelectedItem.Index
            Debug.Print Me.ListView1.SelectedItem.Text
            Debug.Print Me.ListView1.SelectedItem.SubItems (1)
        End Sub
        4、ColumnClick:列单击。当用户在列表视图控件中单击列标题时发生。
        参数:ColumnHeader,列标题信息合集,可用其属性取得相应值。
        Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
            Debug.Print ColumnHeader.Text '文本
            Debug.Print ColumnHeader.Key '主键值
            Debug.Print ColumnHeader.Alignment '对齐方式
        End Sub
        5、DblClick:双击。鼠标双击控件ListItems(除标题外)触发。和Click事件类似。
        Private Sub ListView1_DblClick()
            
        End Sub
        6、Enter:回车。当第一列处于编辑状态,按回车键触发。
        Private Sub ListView1_Enter()
            Debug.Print "AAAA"
        End Sub
        7、Exit:退出。当控件失去焦点时触发。
        参数:Cancel,Cancel = True时执行一次后面的代码,Cancel = False时(默认值)每次失去焦点都会执行后面的代码。
        Private Sub ListView1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
            Cancel = True
            MsgBox "AAA"
        End Sub
        8、ItemCheck:项目检查。点击复选框并修改了复选框状态时触发。
        参数:Item(等同于Me.ListView1.ListItems(i),i为点击的行)
        Private Sub ListView1_ItemCheck(ByVal Item As MSComctlLib.ListItem)
            Debug.Print Item.Index '点击的行号
            Debug.Print Item.Text '点击行的TEXT值,第一列
            Debug.Print Item.SubItems(1) '点击行的第一条SubItems值,第二列
        End Sub
        9、ItemClick:项目单击。点击项目时触发,点击标题、复选框无效。
        参数:Item(等同于Me.ListView1.ListItems(i),i为点击的行)       
        Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
            Debug.Print Item.Checked '点击行的复选框状态
        End Sub
        10、KeyDown:按下键。当控件有焦点且键盘有键按下时触发。
        参数:KeyCode,按下键的编码值,该参数不能返回Shift组合按键值,会先返回Shift键编码16,再返回其它按键编码
                  Shift,Shift键是否同时按下,值为0表示没按下,值为1表示已按下
        Private Sub ListView1_KeyDown(KeyCode As Integer, ByVal Shift As Integer)
            Debug.Print Shift
            Debug.Print KeyCode
        End Sub
        11、KeyPress:按键。当控件有焦点且键盘有按键时触发。
        参数:KeyAsci,按键的Ascii编码值,该参数能返回Shift组合按键值。
        Private Sub ListView1_KeyPress(KeyAscii As Integer)
            Debug.Print KeyAscii
        End Sub
        12、KeyUp:松开键。当控件有焦点且键盘有键松开时触发。
        参数:参照KeyDown事件
        Private Sub ListView1_KeyUp(KeyCode As Integer, ByVal Shift As Integer)
            Debug.Print Shift
            Debug.Print KeyCode
        End Sub
        13、MouseDown:按下鼠标。当控件有焦点且鼠标有按下键时触发。
        参数:Button(1:按下鼠标左键,2:按下鼠标右键,4:按下鼠标滚轮键)
                  Shift,Shift键是否同时按下,值为0表示没按下,值为1表示已按下
                  x和y,鼠标箭头在控件里的位置
        Private Sub ListView1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
            Debug.Print "Button:" & Button
            Debug.Print "Shift:" & Shift
            Debug.Print "X:" & x
            Debug.Print "Y:" & y
        End Sub
        14、MouseMove:鼠标移动。当控件有焦点且鼠标在控件内移动时触发。
        参数:参照MouseDown事件,Button为0时无鼠标按键
        Private Sub ListView1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
            Debug.Print "Button:" & Button
            Debug.Print "Shift:" & Shift
            Debug.Print "X:" & x
            Debug.Print "Y:" & y
        End Sub
        15、MouseUp:松开鼠标。当控件有焦点且鼠标有松开键时触发。
        参数:参照MouseDown事件
        Private Sub ListView1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
            Debug.Print "Button:" & Button
            Debug.Print "Shift:" & Shift
            Debug.Print "X:" & x
            Debug.Print "Y:" & y
        End Sub

TA的精华主题

TA的得分主题

发表于 2023-4-12 12:14 | 显示全部楼层
个人觉得意义不大:
1、可以直接在工作表单中获得查询结果;
2、窗体视野小,翻页也不方面,便利性跟工作表没法比;
3、编码也复杂,远不如工作表的读写简单;

TA的精华主题

TA的得分主题

发表于 2023-8-25 09:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
fanyoulin 发表于 2023-4-12 12:14
个人觉得意义不大:
1、可以直接在工作表单中获得查询结果;
2、窗体视野小,翻页也不方面,便利性跟工作 ...

说的真好,祝您生活愉快,哈哈

TA的精华主题

TA的得分主题

发表于 2023-8-25 09:39 | 显示全部楼层
fanyoulin 发表于 2023-4-12 12:14
个人觉得意义不大:
1、可以直接在工作表单中获得查询结果;
2、窗体视野小,翻页也不方面,便利性跟工作 ...

讲真,实际工作中只求效率的前提下,窗体设计几乎弃用了,但为追求效果的话,可以尝试。

TA的精华主题

TA的得分主题

发表于 2023-8-25 10:50 | 显示全部楼层
电脑太破,开个EXCEL都困难,太尴尬了!
后来用VB6做了个窗体,速度快那么一点了....至少不需要打开EXCEL

TA的精华主题

TA的得分主题

发表于 2023-8-30 15:15 | 显示全部楼层
本帖最后由 wj821123 于 2023-8-30 16:01 编辑

大佬,我的怎么出现这个情况:
数据赋值后隔行插入,代码如下:

Dim I, K As Integer
Dim ARR
ReDim ARR(1 To 1000, 4)
Dim ITM As ListItem
I = 1
For j = 1 To Worksheets("生产预定").Range("C65535").End(3).Row
    If Worksheets("生产预定").Cells(j, 6) = Cells(1, ActiveCell.Column) Then
        ARR(I, 1) = Worksheets("生产预定").Cells(j, 1)
        ARR(I, 2) = Worksheets("生产预定").Cells(j, 3)
        ARR(I, 3) = Worksheets("生产预定").Cells(j, 4)
        ARR(I, 4) = Worksheets("生产预定").Cells(j, 5)
        I = I + 1
    End If
Next j
lv1.ColumnHeaders.Clear
lv1.ListItems.Clear
With lv1
    .Gridlines = True '显示网格线
    .FullRowSelect = True '整行选择
    '.MultiSelect = True '多选
    .LabelEdit = lvwManual '第一列手动修改。不然点两下鼠标就进入编辑状态
    '.CheckBoxes = True '显示复选框
    .View = lvwReport '报表视图
    .Font.Size = 12 '设置字号为四号
    .ColumnHeaders.Add , , "ST_DATE", lv1.Width / 5 '添加标题,并设置宽度为 100。
    .ColumnHeaders.Add , , "生产批号", lv1.Width / 4
    .ColumnHeaders.Add , , "型号", lv1.Width / 4
    .ColumnHeaders.Add , , "工单号", lv1.Width / 4
End With
For j = 1 To I - 1
    lv1.ListItems.Add.Text = ARR(j, 1)
    lv1.ListItems.Add.SubItems(1) = ARR(j, 2)
    lv1.ListItems.Add.SubItems(2) = ARR(j, 3)
    lv1.ListItems.Add.SubItems(3) = ARR(j, 4)
Next j
image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-30 15:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 tanglf188 于 2023-8-30 15:21 编辑

。。。。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-3 19:12 , Processed in 0.046769 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表