Excel精英培训网

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

[已解决]ListView中数据与textbox数据比较

[复制链接]
发表于 2012-10-16 15:45 | 显示全部楼层 |阅读模式
file:///C:\Users\arnold\AppData\Roaming\Tencent\Users\840733521\QQ\WinTemp\RichOle\ZMF`((H0HLYOSTCZ{6I2JL8.jpg如图,我想在保存数据时,与listview中的数据进行对比。看有没有一样的,有的话就不能保存。请问如何取出listview中的值与textbox中的值作比较。具体代码见程序。谢谢大家~~

最佳答案
2012-10-16 18:33
  1. Private Sub CommandButton1_Click()
  2. If TextBox1 = "" Then
  3. MsgBox "布卷号不存在请重新输入布卷号"
  4. Exit Sub
  5. End If
  6. If TextBox2 = "" Then
  7. MsgBox "布卷长度不存在请重新输入布卷长度"
  8. Exit Sub
  9. End If
  10. If TextBox3 = "" Then
  11. MsgBox "花号不存在请重新输入花号"
  12. Exit Sub
  13. End If
  14.     Dim i As Integer, n As Integer
  15.     n = ListView1.ListItems.Count
  16.     If n = 0 Then GoTo add
  17.     For i = 1 To n
  18.         If ListView1.ListItems.Item(i) = TextBox1 Then
  19.             MsgBox "此布卷已经录入,请换录入其他布卷"
  20.             Exit Sub
  21.         End If
  22.     Next i
  23. add: Dim Itm As ListItem
  24.     Set Itm = ListView1.ListItems.add()
  25.     Itm.Text = TextBox1
  26.     Itm.SubItems(1) = TextBox2
  27.     Itm.SubItems(2) = TextBox3
  28.     Itm.SubItems(3) = TextBox4
  29.    For i = 1 To 4
  30.         Me.Controls("Textbox" & i) = ""
  31.     Next
  32. End Sub
复制代码
ZMF`((H0HLYOSTCZ{6I2JL8.jpg

程序.rar

16.68 KB, 下载次数: 24

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-10-16 16:53 | 显示全部楼层
取出listview.items,然后循环与textbox.text做比较
回复

使用道具 举报

 楼主| 发表于 2012-10-16 17:37 | 显示全部楼层
hwc2ycy 发表于 2012-10-16 16:53
取出listview.items,然后循环与textbox.text做比较

谢谢。请问怎么取出第一例的值?能否给出具体代码?
回复

使用道具 举报

发表于 2012-10-16 17:51 | 显示全部楼层
  1.     Dim n&, sItem
  2.     n = ListView1.ListItems.Count
  3.     If n = 0 Then Exit Sub
  4.     For Each sItem In ListView1.ListItems
  5.         If TextBox1.Text = sItem Then Debug.Print "True"
  6.     Next
  7. '    For i = 1 To n
  8. '        If TextBox1.Text = ListView1.ListItems.Item(i) Then Debug.Print "True"
  9. '    Next
复制代码
回复

使用道具 举报

发表于 2012-10-16 17:51 | 显示全部楼层
其实你代码里已经有了。
我是现学现用,又学一招啊,
注释的部分是另外一种循环方法。
回复

使用道具 举报

 楼主| 发表于 2012-10-16 18:15 | 显示全部楼层
hwc2ycy 发表于 2012-10-16 17:51
其实你代码里已经有了。
我是现学现用,又学一招啊,
注释的部分是另外一种循环方法。

谢谢。我也是刚开始学习VBA,还有好多地方都不怎么理解。
但是还是不行, 不能把数据保存到listview中了。还有我想问下 ListView1.ListItems.Item(i)这一句是取listview里面第一列的值么?
我今天被这个折腾了一天都没找到准确的答案。[em06]
回复

使用道具 举报

发表于 2012-10-16 18:27 | 显示全部楼层
我的代码当然不会保存啦。我只是测试。
你的程序刚一开始运行时不会把表中已经数据读入LISTVIEW中吗?
回复

使用道具 举报

发表于 2012-10-16 18:33 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub CommandButton1_Click()
  2. If TextBox1 = "" Then
  3. MsgBox "布卷号不存在请重新输入布卷号"
  4. Exit Sub
  5. End If
  6. If TextBox2 = "" Then
  7. MsgBox "布卷长度不存在请重新输入布卷长度"
  8. Exit Sub
  9. End If
  10. If TextBox3 = "" Then
  11. MsgBox "花号不存在请重新输入花号"
  12. Exit Sub
  13. End If
  14.     Dim i As Integer, n As Integer
  15.     n = ListView1.ListItems.Count
  16.     If n = 0 Then GoTo add
  17.     For i = 1 To n
  18.         If ListView1.ListItems.Item(i) = TextBox1 Then
  19.             MsgBox "此布卷已经录入,请换录入其他布卷"
  20.             Exit Sub
  21.         End If
  22.     Next i
  23. add: Dim Itm As ListItem
  24.     Set Itm = ListView1.ListItems.add()
  25.     Itm.Text = TextBox1
  26.     Itm.SubItems(1) = TextBox2
  27.     Itm.SubItems(2) = TextBox3
  28.     Itm.SubItems(3) = TextBox4
  29.    For i = 1 To 4
  30.         Me.Controls("Textbox" & i) = ""
  31.     Next
  32. End Sub
复制代码
回复

使用道具 举报

发表于 2012-10-16 18:33 | 显示全部楼层
数据统计- 副本.rar (16.89 KB, 下载次数: 61)
回复

使用道具 举报

 楼主| 发表于 2012-10-17 11:23 | 显示全部楼层
hwc2ycy 发表于 2012-10-16 18:33

谢谢班长。用你的这个完美实现了。但是还是有一点我没能理解啊, If n = 0 Then GoTo add。这句代码不是很理解,为什么需要这句?我理解的逻辑是,如果列表里没有数据,那就直接将数据保存到listview中就可以了,增加一行是什么意思。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 11:26 , Processed in 0.438718 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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