Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3510|回复: 5

[已解决]关于ListView中显示列重复问题

[复制链接]
发表于 2011-3-21 12:26 | 显示全部楼层 |阅读模式
5学分
各位大侠,请看附件,我点查询后在“物料名称”那里输入一个查询条件,下面的Listview列就会显示很多列,而实际我定义的是显示五列。请高手帮忙看下是怎么回事,又该如何解决这一问题呢?
最佳答案
2011-3-21 12:41
Private Sub TextBox1_Change()

    Dim Itm As ListItem
    Dim r As Integer
    Dim i As Integer
'    Dim c As Integer
'    r = Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
    With ListView1
        .ColumnHeaders.Clear
        .ColumnHeaders.Add 1, , "ÎïÁÏÃû³Æ ", 50, 0
        .ColumnHeaders.Add 2, , "ÎïÁÏÅú´Î ", 80, 0
        .ColumnHeaders.Add 3, , "ÎïÁÏÊýÁ¿ ", 60, 0
        .ColumnHeaders.Add 4, , "ÎïÁÏ¿âλ ", 80, 0
        .ColumnHeaders.Add 5, , "ʹÓÃÇé¿ö ", 50, 0
        .View = lvwReport
        .Gridlines = True
ListView1.ListItems.Clear
'ListView1.ColumnHeaders.Clear
Dim strtb1 As String

strtb1 = TextBox1.Text
    With Worksheets("sheet1")
    For i = 3 To .[a65536].End(xlUp).Row
        If .Cells(i, 1).Value Like "*" & strtb1 & "*" Then
            Set Itm = ListView1.ListItems.Add()
         
            Itm.Text = .Cells(i, 1)
'            For c = 1 To 4
'                 Itm.SubItems(c) = .Cells(i, c + 1)
'                 Itm.SubItems(c) = Cells(i, c + 1)
'            Next
            Itm.SubItems(1) = .Cells(i, 2)
            Itm.SubItems(2) = .Cells(i, 3)
            Itm.SubItems(3) = Format(.Cells(i, 4), "@")
            Itm.SubItems(4) = .Cells(i, 5)
         
        End If
    Next
    End With

    End With
    Set Itm = Nothing
End Sub

程序调试.rar

40.81 KB, 下载次数: 13

发表于 2011-3-21 12:41 | 显示全部楼层    本楼为最佳答案   
Private Sub TextBox1_Change()

    Dim Itm As ListItem
    Dim r As Integer
    Dim i As Integer
'    Dim c As Integer
'    r = Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
    With ListView1
        .ColumnHeaders.Clear
        .ColumnHeaders.Add 1, , "ÎïÁÏÃû³Æ ", 50, 0
        .ColumnHeaders.Add 2, , "ÎïÁÏÅú´Î ", 80, 0
        .ColumnHeaders.Add 3, , "ÎïÁÏÊýÁ¿ ", 60, 0
        .ColumnHeaders.Add 4, , "ÎïÁÏ¿âλ ", 80, 0
        .ColumnHeaders.Add 5, , "ʹÓÃÇé¿ö ", 50, 0
        .View = lvwReport
        .Gridlines = True
ListView1.ListItems.Clear
'ListView1.ColumnHeaders.Clear
Dim strtb1 As String

strtb1 = TextBox1.Text
    With Worksheets("sheet1")
    For i = 3 To .[a65536].End(xlUp).Row
        If .Cells(i, 1).Value Like "*" & strtb1 & "*" Then
            Set Itm = ListView1.ListItems.Add()
         
            Itm.Text = .Cells(i, 1)
'            For c = 1 To 4
'                 Itm.SubItems(c) = .Cells(i, c + 1)
'                 Itm.SubItems(c) = Cells(i, c + 1)
'            Next
            Itm.SubItems(1) = .Cells(i, 2)
            Itm.SubItems(2) = .Cells(i, 3)
            Itm.SubItems(3) = Format(.Cells(i, 4), "@")
            Itm.SubItems(4) = .Cells(i, 5)
         
        End If
    Next
    End With

    End With
    Set Itm = Nothing
End Sub
回复

使用道具 举报

 楼主| 发表于 2011-3-21 12:46 | 显示全部楼层
回复 阿童木 的帖子

这句的作用是清除以前的排列,用最新的排列?
回复

使用道具 举报

发表于 2011-3-21 12:48 | 显示全部楼层
请见附件。

程序调试jy0321.rar

29.9 KB, 下载次数: 47

回复

使用道具 举报

发表于 2011-3-21 13:09 | 显示全部楼层
清除原先的列标题。不然会一直添加
回复

使用道具 举报

 楼主| 发表于 2011-3-21 18:07 | 显示全部楼层
蓝桥玄霜 发表于 2011-3-21 12:48
请见附件。

r = Cells(Rows.Count, 1).End(xlUp).Row

蓝桥版主把这句用起来了,这句的意思我没看明白,可以帮解释下吗?
这句和ListView1.ColumnHeaders.Clear这句哪个会更快?
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-23 17:21 , Processed in 0.224388 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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