ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: ivccav

[分享] 窗体Listview控件实现可编辑功能的完美解决方法

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-17 08:07 | 显示全部楼层
本帖已被收录到知识树中,索引项:控件
sdj1211 发表于 2018-7-17 07:46
能不能实现选择性的批量修改?比如选择框选1/3/5后,能把第5列都修改为同一数据。

附件中的程序是不能的,只修改当前单元格,我只是提供了Listview修改的功能,特殊的应用还是应该自己改造的,没法适用于所有情况。

你可以在每行前面显示复选框,通过勾选的形式选定要修改的行,然后在修改Inkedit控件的值后,循环Listview,看看哪些行勾选了复选框,如果勾选了,相应列的值都等于InkEdit的值即可。

TA的精华主题

TA的得分主题

发表于 2018-8-13 11:24 | 显示全部楼层
最近正在写个台账系统,这个功能真是太及时了,前面有textbox实现的,但是这个更方便也是我想要的,楼主真是大神,谢谢楼主的无私奉献,但是插一句我也是从外国人写的代码哪里看到你的帖子的,我觉得我们和外国人的差距真是太大啦,这是整整落后了二十年的节奏吗?!希望我是多想了

TA的精华主题

TA的得分主题

发表于 2018-8-13 11:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 wyymy01101 于 2018-8-13 11:51 编辑

再次感谢楼主的分享,已经在研究中

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-13 13:06 | 显示全部楼层
wyymy01101 发表于 2018-8-13 11:24
最近正在写个台账系统,这个功能真是太及时了,前面有textbox实现的,但是这个更方便也是我想要的,楼主真 ...

我这个代码是自己写出来的,没有参考别人,如果你在网上看到有相似的代码可以发给我看看(思路可能会有相似,都是控件子类化,但是InkEdit位置的算法和键盘处理功能是我独立完成的,不是我想自己写,是网上没有这些内容)。你说的20年前外国人写的代码,我看过,太长、太复杂,本论坛有人引用过,没法处理键盘事件和鼠标,我觉得不好用,才自己解决这个问题的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-13 13:14 | 显示全部楼层
本帖最后由 ivccav 于 2018-8-13 13:32 编辑
wyymy01101 发表于 2018-8-13 11:24
最近正在写个台账系统,这个功能真是太及时了,前面有textbox实现的,但是这个更方便也是我想要的,楼主真 ...

落后20年也许的可能的,反正我写这篇帖子之前,我是没找到能实现到本帖中的功能的代码,歪果仁的代码也没有。
20年前我们没几个人见过电脑吧,见过也用不起,太贵了。现在电脑普及了,国人也未必比歪果仁差太多的,特别是应用方面,底层的技术可能还是老外厉害点,毕竟别人研究几十年了。

TA的精华主题

TA的得分主题

发表于 2018-9-12 11:11 | 显示全部楼层
当DB数据库的表记录是空的时候,比如增加第一条记录会出错,请老师怎样修改下,谢谢
Private Sub AddNewListItem()
    With ListView1
        If blnNewItem = False Then
            .ListItems.Add '在最后面新增
            Set .SelectedItem = .ListItems(.ListItems.Count)
            .SelectedItem.EnsureVisible
            intCol = 1
            ShowInkEdit
            blnNewItem = True
        Else
            '验证数据完整性,不通过则不写入数据库
            Dim lngLastIndex As Long, i As Long
            Dim NewID As Object
            Set NewID = CreateObject("adodb.recordset")
            If Not .SelectedItem Is Nothing Then
                lngLastIndex = .ListItems.Count
                If CheckDataIntegrity(lngLastIndex) Then
                    rst.addnew
                    For i = 1 To .ColumnHeaders.Count - 1
                        If Len(.ListItems(lngLastIndex).SubItems(i)) Then
                            rst(i) = .ListItems(lngLastIndex).SubItems(i)
                        End If
                    Next
                    rst.Update
                    Set NewID = cnn.Execute("SELECT @@IDENTITY", , 1) '新插入行的ID
                    If Not NewID.EOF Then .ListItems(lngLastIndex).Text = NewID(0)
                    blnNewItem = False
                    MsgBox "新增行保存成功"
                Else
                    MsgBox "请先填写之前的新增行!", vbCritical
                End If
            End If
        End If
    End With
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-23 10:43 来自手机 | 显示全部楼层
老鬼公公_31 发表于 2018-9-12 11:11
当DB数据库的表记录是空的时候,比如增加第一条记录会出错,请老师怎样修改下,谢谢
Private Sub AddNewLi ...

很久没上网了,现在家没电脑,过几天再看看。

TA的精华主题

TA的得分主题

发表于 2018-10-12 17:12 | 显示全部楼层
尊敬ivccav老师,“[Excel 程序开发] [第13期_1] 仿ListView功能”可以帮忙增加:①在main里录入新的数据保存到data表;②加一个ScrollBar2用于水平调节。恳请回复。

仿ListView.rar

18.2 KB, 下载次数: 156

TA的精华主题

TA的得分主题

发表于 2018-10-12 17:13 | 显示全部楼层
老师,这是原贴地址:[第13期_1] 仿ListView功能
http://club.excelhome.net/thread-175093-1-1.html
(出处: ExcelHome技术论坛)

TA的精华主题

TA的得分主题

发表于 2018-10-12 22:44 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-22 23:11 , Processed in 0.043177 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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