如何使用VBA对窗体ListBox控件的多列列表框控件的数据进行添加与删除

查看: 1707|回复: 5
请教各位高人:用窗体控件ListView1对数据的添加,修改,与删除的问题?
阅读权限30
在线时间 小时
本帖最后由 FJT1966 于
18:11 编辑
请各位高人进来帮忙:
这段代码弄了几天了还是不太理想,
问题一:有时双击ListView1事件时,那三个文字框,得到的数据有时是选中ListView1的下一行数据
& && && && && &不知为什么会出现这种现象,(选下边的数据时出现的这种现象多)
问题二。还出现过双击,选最下边一行数据时程序报错,停止运行的现象
问题三,在添加数据时,B列数据必须不能重复,如何加一段代码加以提示,就是添加数据时如果B列有,就提示。
& && && && & 如果没有就进行添加数据。
& && & 请高手帮看看,代码有不足之处,帮忙给改一下& &
& &&&(关键是代码运行稳定准确)
菜鸟,,,恭候,,,,在线等{:soso_e183:}
(28.83 KB, 下载次数: 43)
18:05 上传
点击文件名下载附件
阅读权限95
在线时间 小时
第一个问题是个概念问题,你把
ListView1.SelectedItem
ListView1.SelectedItem.Index
混了,前者是内容,后者是序号,恰好A列缺少了39这个值才暴露了此问题Private Sub ListView1_Click() '单击事件
Dim MyI As Integer 'Node
& & MyI = ListView1.SelectedItem.Index
& & 序号.Text = ListView1.SelectedItem
& & 图号.Text = ListView1.ListItems(MyI).SubItems(1)
& & 车型.Text = ListView1.ListItems(MyI).SubItems(2)
& &
End Sub
复制代码
阅读权限95
在线时间 小时
& & & & & & & &
第三个问题,加一个字典:Dim d As Object
Private Sub 添加_Click()
Dim Nodx As Integer
& & Dim t1 As String
& & t1 = 图号.Value
& & If d.Exists(t1) Then
& && &&&MsgBox &此图号重复!&
& && &&&Exit Sub
& & End If
& & t2 = 车型.Value
& & MCO = Range(&A65536&).End(xlUp).Row + 1
& & Cells(MCO, 1) = Range(&A65536&).End(xlUp).Row
& & Cells(MCO, 2) = t1
& & Cells(MCO, 4) = t2
& & ListView1.ListItems.Clear
& & 图号.Value = &&
& & 车型.Value = &&
& & 刷新窗体
End Sub复制代码
阅读权限95
在线时间 小时
(28.88 KB, 下载次数: 336)
19:03 上传
点击文件名下载附件
阅读权限30
在线时间 小时
zhaogang1960 版主你好:
很感谢又一次得到你的帮助,祝您好人一生平安 {:soso_e179:}
阅读权限20
在线时间 小时
{:soso__:}好素材!一直以为表格修改比窗体要快!真的错了!。。。
最新热点 /1
ExcelHome每周都有线上直播公开课,
国内一流讲师真身分享,高手贴身答疑,
赶不上直播还能看录像,
关键居然是免费的!
厚木哥们都已经这么努力了,
你还好意思说学不好Office。
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师用VBA向列表框(ComboBox或ListBox)中填加数据 - CSDN博客
用VBA向列表框(ComboBox或ListBox)中填加数据
用VBA向列表框(ComboBox或ListBox)中填加数据
向列表框中填加的方法很多,下面根据实例介绍3种最常用到的方法:图1图2如图1所示的下拉列表框(组合框),图2为其数据源,图2所有在表名为:表无论哪种方法我们都首先要知道最后这个数据所在的行数。如图2的第4行。
& & Dim l As Long& && && &'表示行数时,应该习惯设成长整型& & l = Sheets("设置表").("A65536").End(xlUp).Row
上述代码请参见《》方法一:循环Additem
Sub Ok01()& & '.cn& & Dim l As Long& && && &'表示行数时,应该习惯设成长整型& & Dim i As Long& & Dim ws As Work& & & & Set ws = Worksheets("设置表")& & l = ws.Range("A65536").End(xlUp).Row& & For i = 2 To l& && &&&ComboBox1.AddItem (ws.Cells(i, 1))& & NextEnd Sub
这种方法常应用在:(1)将数组加到列表中;(2)不连续的区域;(3)从中读出的数据等等。方法二:设置数据源区域
Sub OkExcel02()& & '.cn& & Dim l As Long& & Dim ws As Worksheet& & & & Set ws = Worksheets("设置表")& & l = ws.Range("A65536").End(xlUp).Row& & ComboBox1.List = ws.Range("A2:A" & l).ValueEnd Sub
这种方法常应用在连续的区域,如果源区域的数据固定(如民族)可以省算l的步骤。方法三:名称法:首先定义名称:(菜单:插入/名称/定义)图3如图3所示,定义名称当数据源中的数据有增减变化时执行如下过程:
Sub OkExcel03_1()& & '.cn& & Dim l As Long& & Dim ws As Worksheet& & Set ws = Worksheets("设置表")& & l = ws.Range("A65536").End(xlUp).Row& & ThisWorkbook.Names("类别").RefersTo = "=设置表!$A$2:$A$" & lEnd Sub
填写数据时执行职下过程:
Sub OkExcel03_2()& & '.cn& & ComboBox1.List = ThisWorkbook.Names("类别").RefersToRange.ValueEnd Sub
这种方法常应用在连续的区域,并且一个数据源应用于多个列表框,如在不同的窗体中。
本文已收录于以下专栏:
相关文章推荐
列表框(ListBox)控件表示一个选项清单,用户可能用鼠标选择其中一个或者几个选项。  列表框的特点是:列表框中的项目是通过程序插入到其中的,用户无法向清单中输入数据,当选择其中的项目,并在用户单击...
  ListBox
  中文名称列表框
  可以也许经过vb的代码添加、建正列表框的内容
  列表框可以也许在编程中隐示各种必要的数值
  Sub AddItem(I...
今天在做VB项目的时候,使用了ListBox控件来获取一些列表项,用了才发现没有ListView好用,ListView有Items(SelectItem)可以定位到当前的选中项,而ListBox没有;...
传统方法是遍历一遍如果listbox 项目过多明显速度不行好方法是通过sendmessge发消息给listbox让他把选中项目直接传到参数数组中You can use the SendMessage(...
Private Sub Form_Load()
'ListView1.SmallIcons = ImageList1.Object '把ImageList1图标列表控件绑定到 ListVie...
7.4.3 如何创建一个列表框?
列表框是提供给用户选择的另一机制。选项被放置在一个矩形的窗口中,用户可以选择一个或多个。列表框比单选按钮占据较少的空间,当选项的数目相对少的时候,列表框是一个好的选...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)利用ListBox列表框多列
我的图书馆
利用ListBox列表框多列
进销存先放放吧,太麻烦,今天下班早,赶紧抓紧时间!!!!!!!& & & & & & & & & & & & & & & & & & & &&文件已经发到群里。都知道ListBox是列表控件,但是也可以用来当作表格使用(不可编辑),表格控件还有很多个,我平时是使用ListView下面的例子来看一下实际应用:让上面Sheet数据还以表格形式显示在窗口中,其实特别的简单,在表单下面新建一个按钮,代码:Private Sub CommandButton1_Click()UserForm1.ShowEnd Sub意思是让某一个窗口显示,主要讲Show窗口名字 .Show如果要暂时隐藏 UserForm, 使用 隐藏 方法。使用以下代码:UserForm1.Hide&要卸载, 名为 UserForm1,窗口使用以下代码:Unload UserForm1然后到vbe新建一个窗口,窗口中增加一个ListBox控件,双击窗口空白区域,写入代码:(窗口加载事件)Private Sub UserForm_Initialize()Dim rng As Range, cw As String, i As Integer’定义变量,rng是显示源区域,cw是区域内每个单元格数据,i是循环变量& & Set rng = Sheet1.Range('A2:E12')&’设置rng的源区域为Sheet1.Range('A2:E12')&& & With UserForm1.ListBox1’with语句陈述式& & & & .ColumnCount = 4 & ’窗口为4列(视数据源列数而定)& & & & .RowSource = 'Sheet1!' & rng.Address & ’表格控件数据源为rng& & & & cw = '' & &’初始化变量cw为空白& & & & For i = 1 To 4 & & ’for循环语句& & & & & & cw = cw & rng.Columns(i).Width & ';' & &’获取数据源列宽& & & & Next& & & & .ColumnWidths = cw & & ’设置控件列宽& & End WithEnd Sub
TA的最新馆藏
喜欢该文的人也喜欢我要文库申报
查看: 6647|回复: 2
如何给列表框或组合框添加单列或者多列项目?
积分学习力
魅力值 影响力
消费券 Ti币好友
在线时间 小时
最后登录月度优秀 次管理次数 次
网站名称: Excel技巧网 | Excel专家栖息谷 | 微软中文技术社区合作伙伴站内采编:
署名作者: 水星钓鱼
版权声明: 版权归本站与作者共有 除本站官方外非作者本人转载须经许可并注明出处
适用版本: 2007&
语言环境: 简体中文
学习方法: 掌握Excel技巧的关键是动手操作
下载 ≠ 知识
免费注册成为本站会员,享用更多功能,结识更多Office办公高手!
才可以下载或查看,没有帐号?
本帖最后由 水星钓鱼 于
19:48 编辑
Q:如何给列表框或组合框添加单列或者多列项目?
A:由于给列表框和组合框添加项目的方法是一样的。所以接下来都以列表框为例,且假设用户窗体上有一个列表框控件ListBox1。
(7.54 KB, 下载次数: 66)
19:47 上传
点击文件名下载附件
如何给列表框或组合框添加单列或者多列项目?
对于单列的列表框,向一个空的列表框添加项目可以使用列表框的AddItem方法。
如下所示:
Private Sub UserForm_Initialize()
& &With Me.ListBox1
& && &&&.AddItem = &a&
& && &&&.AddItem = &b&
& && &&&.AddItem = &c&
& & End With
End Sub
复制代码使用Additem方法只能一个元素一个元素的添加,利用它的第二个参数还可以灵活的指定将要添加的元素的位置。
如果想要一次性添加多个元素,可以使用列表框的List属性。
如以下代码也是向列表框添加a,b,c元素:Private Sub UserForm_Initialize()
& &With Me.ListBox1
& && & .List = Array(&a&, &b&, &c&)
& &End With
End Sub
复制代码可以把List属性的数据类型看作是Variant类型。当列表框中无项目时,List属性值为Null,一旦列表框中有了项目,它就是一个以行数为第一维,列数为第二维的二维数组。
对于想要设置显示为多列的列表框,首先要设置列表框的ColumnCount属性为想要显示的列数。(如果不设置该属性,将不能显示多列数据)
如果再用AddItem方法给列表框添加项目的话,会出现怎样的情况呢?
如下所示:Private Sub UserForm_Initialize()
& &With Me.ListBox1
& && &&&.ColumnCount = 2
& && &&&.AddItem &A&
& && &&&.AddItem &B&
& && &&&'检查列表框第2列第1行的元素
& && &&&MsgBox VarType(.List(0, 1)) = vbNull
& &End With
End Sub复制代码运行代码可以发现,用AddItem方法给多列的列表框赋值时,只能赋值给第一列,其余列都是Null值。此时可以使用List属性来改变其余列的元素。
如下所示:Private Sub UserForm_Initialize()
& &With Me.ListBox1
& && &&&.ColumnCount = 2
& && &&&.AddItem &A&
& && &&&.AddItem &B&
& && &&&.List(0, 1) = &C&
& && &&&.List(1, 1) = &D&
& &End With
End Sub复制代码当然也可以一次性将一个二维数组赋值给列表框。
如下所示:Private Sub UserForm_Initialize()
& &With Me.ListBox1
& && &&&.ColumnCount = 2
& && &&&.List = Application.Evaluate(&{&&A&&,&&C&&;&&B&&,&&D&&}&)
& & End With
End Sub复制代码这里容易犯的错误就是直接用list属性来为列表框的某行某列赋值。
如下所示:Private Sub UserForm_Initialize()
& &With Me.ListBox1
& && &&&.ColumnCount = 2
& && &&&.List(0, 0) = 1
& & End With
End Sub复制代码这是错误的,因为当要指定具体的某个行列数时,前提是要这个行列已经存在。事实上,在给List(0, 0)赋值前,它是不存在的。引用了不存在的元素将导致错误。
积分学习力
魅力值 影响力
消费券 Ti币好友
在线时间 小时
最后登录月度优秀 次管理次数 次
前提是Rowsource=&&,否则会出现无权操作的错误
积分学习力
魅力值 影响力
消费券 Ti币好友
在线时间 小时
最后登录月度优秀 次管理次数 次
端个板凳过来学习!
站长推荐 /1
40集公式入门动画教程,一天带你打好公式的基础。
Excel技巧网的会员探讨问题仅代表其个人意见,与网站的立场无关。任何违反国家和地方相关法律法规的言论,本站有义务协助政府相关部门追究发言者的责任!
本站中非注明转载文章与案例的版权为作者与Excel技巧网共有。若非原文作者,本站之外任何单位或个人未经允许,不得将其用于商业用途。
若非原文作者,任何形式的非商业性转载必须获得Excel技巧网或作者允许,并注明作者和出处。
会员发表的帖子如涉及版权纠纷,须自行负责。详情请参考注册时的网站服务条款。
本站特聘法律顾问:沈学律师
Powered by

我要回帖

更多关于 excel列表框窗体控件 的文章

 

随机推荐