vb中listview的使用案例
- 格式:docx
- 大小:14.03 KB
- 文档页数:2
竭诚为您提供优质文档/双击可除vb,读取excel表格数据并在listview控件中显示篇一:Vb用listView读取excel实例Vb用listView读取excel实例第一步:用excel创建成绩表,如下图示例第二步:打开Vb6创建一工程、标准窗口第三步:引用excel,在菜单栏,工程——引用,如下图第四步:在工具栏加载控件microsoftwindowscommoncontrols6.0(sp6),如下图第五步:在标准窗口加入listview控件,控件属性设置如下图在“列首”标签添加字段名,如下图第五步:编写代码dimxlappasexcel.applicationprivatesubForm_load()setxlapp=createobject("excel.application")xlapp.Visible=Falsexlapp.workbooks.openapp.path查找列中所有的单元格setlitem=listView1.listitems.add()litem.text=xlapp.Range("a"checkifemptydataRowblnnullRow=trueForinti=1to10iftrim$(objimportsheet.cells(intcounti,inti).Value) ""thenblnnullRow=Falseendifnextinti若不是空行,则进行读取动作,否则继续向后遍历excel 中的行ifblnnullRow=Falsethen获取单元格中的数据,做有效性check,并将合法数据创建为实体存入对象数组中objimportsheet.cells(intcounti,1).Value……endifnextintcounti5、退出excel进程,并关闭excel相关操作对象objexcelFile.quitsetobjworkbook=nothingsetobjimportsheet=nothingsetobjexcelFile=nothing篇三:vb代码读取excel数据源取得excel文件所有内容:addmicrosoftadofrist.privatesubcommand2_click()dimadoconnectionasnewadodb.connectiondimadoRecordsetasnewadodb.Recordsetcommondialog1.showopenoledb+odbcdriver方式:adoconnection.open"dataprovider=msdasql.1;driver=mi crosoftexceldriver(*.xls);dbq=e:\temp\book2.xls"microsoft.jet.oledb.4.0方式,(建)adoconnection.open"provider=microsoft.jet.oledb.4.0 ;persistsecurityinfo=False;datasource="extendedproperties=excel8.0;hdR=yes"adoRecordset.open"select*from[sheet1$]",adoconnecti on,adopenkeyset,adlockoptimisticdebug.printadoRecordset.RecordcountdimiasintegerdountiladoRecordset.eoFFori=0toadoRecordset.Fields.count-1debug.printadoRecordset.Fields.item(0).namedebug.printadoRecordset.Fields.item(0).ValuenextiadoRecordset.movenextloopendsub但还不知道如何取得sheet名,不好意思,那位老鸟知道请告知,谢谢sheet名用excel.application对象dimxlappasexcel.applicationdimxlbookasexcel.workbooksetxlapp=newexcel.applicationsetxlbook=xlapp.workbooks.open("c;\123.xls"))Fori=1tointsheetsumstrtemp=xlbook.worksheets(i).name。
如何在VB中利用listview快速显示10000以上的记录如何在VB中利用listview快速显示10000以上的记录listview显示起来美观,可就是速度不行比如下面的方式For i = 0 To 10000ListView1.ListItems.Add ListView1.ListItems.Count + 1, , ListView1.ListItems.Count + 1ListView1.ListItems.Item(ListView1.ListItems.Count).SubItem s(1) = ("你好啊")ListView1.ListItems.Item(ListView1.ListItems.Count).SubItem s(2) = ("你好啊")ListView1.ListItems.Item(ListView1.ListItems.Count).SubItem s(3) = ("你好啊")Next i用逐个添加速度很慢,看到一个avafind软件,几万行的数据显示出来只要零点几秒请问各位高手如何在VB中实现listview的快速显示呢?只要没有停顿感就好。
如果能解决,可再加100分------解决方案--------------------------------------------------------其实很简单,有种virtual模式就可以的啊,你可搜下相应的资料:)------解决方案--------------------------------------------------------先禁止列表重绘,再添加数据自己添加 LockWindowUpdate api,然后这样:LockWindowUpdate hWndListViewfor xxx。
给列表添加数据nextLockWindowUpdate 0&------解决方案--------------------------------------------------------LockWindowUpdate禁止LV控件重绘,然后开一个循环,不要加DoEvents,就直接添加全部数据,这样速度有显著提升。
VBA实战系列(ListView控件)VBA项目实战__ListView控件应用ListView控件是一款非常优秀的表格控件,被广泛应用于VBA项目。
VBA使用者熟练地掌握此控件的用法,不仅能大大地增加自己学习VBA的兴趣,而且对实际工作也有很好的帮助。
一、Excel基础数据二、实现效果我们要通过VBA控件list view,实现如下图示效果三、实现过程(一)添加listview控件1.打开VBE编辑器,新建窗体flist2.添加listview控件。
在工具箱中选择listview控件放入窗体。
如工具箱中没有该控件,则应查找注册MSCOMCTL.OCX 文件。
我们可以按照以下方法进行注册:1)将文件解压到“C:\WINDOWS\system32”(WindowsXP);2)单击【开始】|【运行】命令,键入“regsvr32 C:\WINDOWS\system32 \MSCOMCTL.OCX ”(WindowsXP)”进行注册。
(二)添加代码1.添加表头Private Sub UserForm_Initialize()ListView1.ColumnHeaders.Add , , "日期", 64, 0ListView1.ColumnHeaders.Add , , "姓名", 54, 2ListView1.ColumnHeaders.Add , , "性别", 42, 2ListView1.ColumnHeaders.Add , , "年龄", 54, 2ListView1.ColumnHeaders.Add , , "联系方式", 54, 2ListView1.ColumnHeaders.Add , , "电话", 99, 2ListView1.ColumnHeaders.Add , , "诊断", 54, 2ListView1.ColumnHeaders.Add , , "手术名称", 86, 2ListView1.View = lvwReport '显示格式为报表格式ListView1.FullRowSelect = True '允许整行选中ListView1.Gridlines = True '显示网格线' ListView1.Sorted = True '排序End Sub以上代码中ListView1.ColumnHeaders.Add , , "日期", 64, 0中的64代表该表头字段的宽度,0代表居左显示方式。
窗体代码如下:Option ExplicitPrivate Sub Combo1_Click()Select Case Combo1.ListIndexCase 0:ListView1.Arrange = 0 'lvwNoArrange Case 1:ListView1.Arrange = lvwAutoLeft Case 2:ListView1.Arrange = lvwAutoTop End SelectEnd SubPrivate Sub Command2_Click()Dim list_item As ListItemSet list_item = ListView1.ListItems.Add(, , "101包房")list_item.Icon = 1list_item.SmallIcon = 1list_item.SubItems(1) = "可供"list_item.SubItems(2) = "100元人民币"End SubPrivate Sub Form_Load()Dim column_header As ColumnHeaderSet column_header = ListView1.ColumnHeaders.Add(, , "餐台号", TextWidth(Space(20) & "餐台号")) Set column_header = ListView1.ColumnHeaders.Add(, , "状态", TextWidth(Space(20) & "状态")) Set column_header = ListView1.ColumnHeaders.Add(, , "消费金额", TextWidth(Space(20) & " 消费金额"))Set column_header = ListView1.ColumnHeaders.Add(, , "进店时间", TextWidth(Space(20) & "进店时间"))Set column_header = ListView1.ColumnHeaders.Add(, , "已用时间", TextWidth(Space(20) & "已用时间"))Set column_header = ListView1.ColumnHeaders.Add(, , "备注", TextWidth(Space(60) & "备注")) mnuViewIcon_Click lvwReportEnd SubPrivate Sub ListView1_DragOver(Source As Control, x As Single, y As Single, State As Integer) MsgBox "66"End SubPrivate Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)StatusBar1.Panels(2) = Item.TextStatusBar1.Panels(3) = ItemEnd SubPrivate Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)If Button = 2 ThenPopupMenu mnuViewEnd IfEnd SubPrivate Sub mnuAdd_Click()Dim list_item As ListItemDim i As IntegerFor i = 1 To 9Set list_item = ListView1.ListItems.Add(, , "10" & i & "包房")list_item.Icon = 1list_item.SmallIcon = 1list_item.SubItems(1) = "可供"list_item.SubItems(2) = i & "100元人民币"NextEnd SubPrivate Sub mnuViewIcon_Click(Index As Integer)Dim i As IntegerListView1.View = IndexFor i = 0 To 3If i = Index ThenmnuViewIcon(i).Checked = TrueElsemnuViewIcon(i).Checked = FalseEnd IfNext iEnd Sub。
vba listview控件用法例子VBA Listview控件用法示例在VBA编程中,Listview控件是一种非常有用的工具,它可以用于显示和管理大量数据。
Listview控件提供了一种可视化的方式来展示数据,并且可以方便地对数据进行排序、筛选和编辑。
以下是一个简单的示例,演示了如何使用VBA中的Listview控件。
首先,我们需要在VBA中添加Listview控件。
步骤如下:1. 打开VBA编辑器(按下Alt+F11)。
2. 在工具箱中找到"Microsoft Windows Common Controls",如果没有找到,可以右键点击工具箱,选择"其他控件",找到并勾选它。
3. 在VBA编辑器中的工具箱中,单击鼠标右键,选择"附加",然后选择"Microsoft Windows Common Controls X.X(其中X.X表示版本号)"。
4. 在工具箱中找到并单击"Listview"控件,然后在用户窗体上绘制一个Listview 控件。
接下来,我们可以使用以下代码示例来演示Listview控件的用法:```vbaPrivate Sub UserForm_Initialize()Dim i As Integer' 设置Listview控件的列标题With ListView1.View = lvwReport.ColumnHeaders.Add , , "姓名".ColumnHeaders.Add , , "年龄".ColumnHeaders.Add , , "性别"End With' 向Listview控件中添加数据With ListView1.ListItemsFor i = 1 To 10' 添加行Set itm = .Add(, , "姓名" & i)' 添加子项itm.SubItems(1) = "年龄" & iitm.SubItems(2) = "性别" & iNext iEnd WithEnd Sub```以上代码首先在用户窗体初始化事件中设置了Listview控件的列标题。
中ListView控件使用详解及案例在中,ListView控件是一个非常强大的控件,它允许用户在Windows窗体应用程序中显示列表数据。
通过使用ListView控件,您可以轻松地展示、编辑和操作数据,并且可以根据需要自定义其外观和行为。
下面将详细介绍ListView控件的使用方法和案例。
一、添加ListView控件首先,您需要在Windows窗体中添加ListView控件。
可以通过拖拽ListView控件从工具箱将其添加到窗体上。
二、设置ListView属性在添加完ListView控件后,您需要设置其属性以定义其外观和行为。
以下是一些常用的属性:1.View:设置ListView的显示方式,可以选择大图标、小图标、列表或详细列表等。
2.FullRowSelect:设置是否选择整行。
3.Sorted:设置是否对ListView进行排序。
belEdit:设置是否允许编辑ListView中的标签。
rgeImageList:设置大图标的图像列表。
6.SmallImageList:设置小图标的图像列表。
7.SelectionMode:设置选择模式,可以选择单选或多选。
三、添加项目在设置完属性后,您需要向ListView中添加项目。
可以通过以下几种方式添加项目:1.手动添加:使用代码逐个添加项目。
例如:ListView1.Items.Add("Item1")。
2.绑定数据源:将数据源绑定到ListView,数据源可以是数组、集合或数据表等。
例如:ListView1.DataSource = dataTable。
3.拖放文件:将文件拖放到ListView中,可以自动创建项目并显示文件名。
四、案例:显示目录中的文件列表下面是一个简单的案例,演示如何使用ListView控件显示目录中的文件列表:1.创建一个Windows窗体应用程序。
2.在窗体上添加一个ListView控件。
3.设置ListView的属性,例如View设置为LargeIcon,SelectionMode设置为Single。
VB6之ListView控件实现单选、多选、更新选定列内容数据库编程中经常用到ListView控件实现选择后更新选定列内容的操作,通过该文档,读者可以更好的理解ListView控件的常用属性及方法。
从而使数据库操作更加友好,直观。
很多读者在使用该控件的时候都会遇到第一列填充不了内容的情况。
该情况是因为ListView控件的第一列(图中红色方框所示)和后面的列(图中蓝色方框所示)表示方法不一样。
红色方框部分用ListView1.ListItems.Add方法表示并添加。
蓝色方框部分用itmX.SubItems(i)方法表示并添加。
起始索引为1 。
本文将详细讲述ListView1实现上图所示功能。
本文的数据库链接已经定义在标准模块中。
具体代码如下:Public Function cnn() As ADODB.ConnectionSet cnn = New ADODB.Connectioncnn.Open "Provider=SQLOLEDB.1;Password=ldg730108;Persist SecurityInfo=True;User ID=ldg;Initial Catalog=ldg;Data Source=172.30.76.249"End Function一、将数据库内容添加到ListView1控件中请注意设置ListView1的view、Checkboxs属性。
Form_Load具体代码如下:Private Sub Form_Load()'设置ListView1的样式为报表样式ListView1.View = lvwReport'设置ListView1可以复选ListView1.Checkboxes = True'声明一个记录集Dim rs As ADODB.Recordset'设置一个新的记录集Set rs = New ADODB.Recordset'打开表winkrs.Open "select * from wink", cnn, adOpenKeyset, adLockOptimistic'设置ListView1的列标题Dim clmX As ColumnHeaderSet clmX = ListView1.ColumnHeaders.Add(, , "Id", ListView1.Width / 6)Set clmX = ListView1.ColumnHeaders.Add(, , "Name", ListView1.Width / 6)Set clmX = ListView1.ColumnHeaders.Add(, , "Sex", ListView1.Width / 6)Set clmX = ListView1.ColumnHeaders.Add(, , "Age", ListView1.Width / 6)Set clmX = ListView1.ColumnHeaders.Add(, , "Address", ListView1.Width / 6) Set clmX = ListView1.ColumnHeaders.Add(, , "Birth", ListView1.Width / 6)'将数据库内容添加到ListView1中Dim itmX As ListItemWhile Not rs.EOFSet itmX = ListView1.ListItems.Add(, , rs.Fields("id"))If Not IsNull(rs!Name) ThenitmX.SubItems(1) = rs.Fields("name")End IfIf Not IsNull(rs!sex) ThenitmX.SubItems(2) = rs.Fields("sex")End IfIf Not IsNull(rs!age) ThenitmX.SubItems(3) = rs.Fields("age")End IfIf Not IsNull(rs!address) ThenitmX.SubItems(4) = rs.Fields("address")End IfIf Not IsNull(rs!birth) ThenitmX.SubItems(5) = rs.Fields("birth")End If'移动到下一条记录。
VB ListView的使用ListView控件比前面几种控件要复杂一些,通过此控件,可将项目组成带有或不带有列标头的列,并显示伴随的图标和文本。
ListView控件是由ColumnHeader和ListItem对象所组成的,其中ColumnHeader对象的个数决定了控件的列数,而ListItem对象的个数则决定了控件的行数。
(图7)ColumnHeader对象是ListView控件中包含标头文字的项目。
利用ColumnHeader对象,用户可以:▲单击对象触发ColumnClick事件并根据数据项目将项目排序。
▲拖动对象的右边框来调整列宽度。
▲在报表视图中隐藏ColumnHeader对象。
ColumnHeader对象的数目决定每个ListItem对象可包含的子项目数目。
删除ColumnHeader对象后所有与列关联的子项目也将被删除,并且每个ListItem对象的子项目数组将平移以更新ColumnHeader的索引,而这将导致剩余的列标头SubItemIndex属性的改变。
ColumnHeader对象的SubItemIndex属性该属性返回与ListView控件中ColumnHeader对象关联的子项目的索引。
子项目是字符串数组,代表显示在报表视图中的ListItem对象的数据。
第一列的列标头SubItemIndex属性设置为0,这是因为小图标和ListItem对象的文字总出现在第一列中,而且它们被当作ListItem对象而不是子项目。
列标头数目取决于子项目数目。
列标头数目总是比子项目数目多1。
在设计时可以利用属性页的“列首”选项卡将ColumnHeader对象添加到ListView控件中,在运行时则用Add方法添加。
ColumnHeader对象的Add方法该方法的使用与前面那些控件基本相似,就不再介绍了。
ListView1.ColumnHeader.Add(index,key,text,width,alignment)ListItem对象是指控件中的一行(不包含标头行)的所有内容。
VBAListView控件使⽤实例功能:ListView控件实现连接数据库实现显⽰查询数据空能。
图⽚:代码:Private Sub CommandButton1_Click()Dim res As Stringres = TextBox1.TextCall UserFormabc(res)End Sub'ItemClick:Trigger an event when a row or ListItem is selected. To get ListItem Object which is selected.Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)Dim intX As Integer'Difine a variable as integerintX = ListView1.SelectedItem.IndexTextBox1.Text = ListView1.ListItems(intX).TextEnd SubPrivate Sub UserFormabc(Optional ByVal res As String = "")With ListView1 'To initialize listview.ColumnHeaders.Add , , "Project No.", 120, lvwColumnLeft.ColumnHeaders.Add , , "Project Name", 120, lvwColumnCenter.ColumnHeaders.Add , , "Department", 120, lvwColumnCenter.ColumnHeaders.Add , , "Date", 120, lvwColumnCenter.View = lvwReport 'The report format.LabelEdit = lvwManual 'Do not edit.Gridlines = True.FullRowSelect = TrueEnd WithDim cnn As StringDim rs As RecordsetDim sql As Stringcnn = "Provider=Microsoft.ACE.OLEDB.16.0;" & _"Data Source=D:\2\VBA\A3\database\A3db2019.accdb"If res = ""Thensql = "select A3_Project.*, A3_Dept.* from A3_Project left join A3_Dept on A3_Project.ProjectID=A3_Dept.ProjectID"Elsesql = "select A3_Project.*, A3_Dept.* from A3_Project left join A3_Dept on A3_Project.ProjectID=A3_Dept.ProjectID where A3_Project.ProjectID='" & res & "'"End IfSet rs = New Recordsetrs.Open sql, cnn, 1, 1ListView1.ListItems.ClearFor i = 1To rs.RecordCountWith ListView1.ListItems.Add() 'Add records.Text = rs.Fields("A3_Project.ProjectID") 'Add the first column .SubItems(1) = rs.Fields("ProjectName") 'Add the second column .SubItems(2) = rs.Fields("Department").SubItems(3) = rs.Fields("Date")rs.MoveNextEnd WithNextrs.CloseEnd SubPrivate Sub UserForm_initialize()Call CommandButton1_ClickEnd Sub。
Me.ListView1.View = lvwReport '设置成报表形式ListView1.GridLines = TrueListView1.FullRowSelect = True '设置整行选择'添加listview1标头、宽度~~~~~~~~~~~~~~~~~~~~~`With ListView1.View = lvwReport.ColumnHeaders.Add = "ID".ColumnHeaders.Add = "信息类型".ColumnHeaders.Add = "发生日期".ColumnHeaders.Add = "提醒时间".ColumnHeaders.Add = "信息摘要".ColumnHeaders.Add = "添加时间".ColumnHeaders.Add = "信息内容".ColumnHeaders.Add = "完成情况"'--------------设置每行宽度.ColumnHeaders(1).Width = 800.ColumnHeaders(2).Width = 1200.ColumnHeaders(3).Width = 1000.ColumnHeaders(4).Width = 1200.ColumnHeaders(5).Width = 1500.ColumnHeaders(6).Width = 2000.ColumnHeaders(7).Width = 1500.ColumnHeaders(8).Width = 1500End With'添加listview1数据~~~~~~~~~~~~~~~~~~~~~~Dim addlist1 As ListItemCall connectdata '此处为数据库的ADO连接过程,过程程序在后面bs.Open "select * from message", rs, 1, 1Do While Not bs.EOFSet addlist1 = ListView1.ListItems.Add(, , str(bs.Fields("id"))) '将各项数据加入list列表addlist1.SubItems(1) = IIf(IsNull(bs.Fields("type")), "", bs.Fields("type")) addlist1.SubItems(2) = IIf(IsNull(bs.Fields("sdate")), "", bs.Fields("sdate")) addlist1.SubItems(3) = IIf(IsNull(bs.Fields("stime")), "", bs.Fields("stime")) addlist1.SubItems(4) = IIf(IsNull(bs.Fields("title")), "", bs.Fields("title")) addlist1.SubItems(5) = IIf(IsNull(bs.Fields("adate")), "", bs.Fields("adate"))addlist1.SubItems(6) = IIf(IsNull(bs.Fields("cms")), "", bs.Fields("cms")) addlist1.SubItems(7) = IIf(IsNull(bs.Fields("wms")), "", bs.Fields("wms")) bs.MoveNextLoopbs.Closers.Close附其中数据库连接数据:'*****定义数据库连接参数Public rs As New ADODB.ConnectionPublic bs As New ADODB.RecordsetPublic sql As String '查询字符串Public filename As String '数据库名称Public ctrFi '连接字符串Public Sub connectdata()'连接数据库过程,此处为ACCESS数据库filename = App.Path + "\" + "honshV1.mdb"ctrFi = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & filenameIf rs.State = adStateClosed Thenrs.Open ctrFiElsers.CloseEnd IfEnd Sub。
vblistview控件⽤法VB ListView控件适⽤⽅法ListView控件在⼯具箱上击⿏标右键,选择快捷菜单的Components(部件)项,在控件列表中选择Microsoft Windows Common Controls 5.0控件(Comctl32.ocx),这个控件中包括ListView、TreeView等⼏个Windows 95特有的控件。
如果使⽤的是Visual Basic 6.0,则应该选择Microsoft Windows Common Controls 6.0控件。
将ColumnHeader 对象添加到ListView 控件的ColumnHeaders 集合中。
语法ListView1.ColumnHeaders.Add(index, key, text, width, alignment, icon)Add ⽅法的语法包含下⾯部分:部分描述object 必需的。
对象表达式,其值是ColumnHeaders 集合。
index 可选的。
唯⼀标识对象集合成员的整数。
key 可选的。
唯⼀的字符串表达式,可以⽤来访问集合的成员。
text 可选的。
出现在ColumnHeader 对象中的字符串。
width 可选的。
数值表达式,它使⽤控件容器的度量单位指定对象的宽度。
alignment 可选的。
决定ColumnHeader 对象中⽂本对齐⽅式的整数。
关于设置信息,请参阅“请参阅列表中Alignment 属性的信息。
icon 可选的。
Smallicons 图象列表中图象的关键字或索引。
说明Add ⽅法返回新插⼊的ColumnHeader 对象的引⽤。
使⽤index 参数在ColumnHeaders 集合的特定位置插⼊列标头。
当ColumnHeaders 集合成员可能动态变更时,应使⽤Key 属性引⽤它们,因为任何ColumnHeader 对象的Index 属性都可以改变。
⽰例:ListView1.ListItems.Clear '清空列表ListView1.ColumnHeaders.Clear '清空列表头ListView1.View = lvwReport '设置列表显⽰⽅式ListView1.GridLines = True '显⽰⽹络线ListView1.FullRowSelect = True '选择整⾏ListView1.ColumnHeaders.Add , , "ID", 500 '给列表中添加列名ListView1.ColumnHeaders.Add , , "本地IP", 1500ListView1.ColumnHeaders.Add , , "本地端⼝", 900ListView1.ColumnHeaders.Add , , "协议", 550ListView1.ColumnHeaders.Add , , "远程IP", 1500ListView1.ColumnHeaders.Add , , "远程端⼝", 900ListView1.ColumnHeaders.Add , , "当前状态", 900ListView1.ColumnHeaders.Add , , "连接时间", 900-------------------------------------------------------Dim XX = ListView1.ListItems.Count + 1ListView1.ListItems.Add , , XListView1.ListItems(X).SubItems(1) = "00:00:00"ListView1.ListItems(X).SubItems(2) = "2008-01-01"ListView1.ListItems(X).SubItems(3) = "(⽆)"-------------------------------------------------------ListView1.ListItems.Clear '清空列表ListView1.ListItems.Add , , "1"ListView1.ListItems(1).SubItems(1) = "00:00:00"ListView1.ListItems(1).SubItems(2) = "2008-01-01"ListView1.ListItems(1).SubItems(3) = "(⽆)"ListView1.ListItems.Add , , "2"ListView1.ListItems(2).SubItems(1) = "00:00:01"ListView1.ListItems(2).SubItems(2) = "2008-01-01"ListView1.ListItems(2).SubItems(3) = "(⽆)"-------------------------------------------------------ListView1.View = lvwReport '设置显⽰⽅式为列表ListView1.AllowColumnReorder = True '对⾏进⾏程序排列,⽤⿏标进⾏排列ListView1.Arrange = lvwAutoLeft '图标横排列ListView1.Arrange = lvwAutoTop '图标竖排列ListView1.FlatScrollBar = False '显⽰滚动条ListView1.FlatScrollBar = True '隐藏滚动条ListView1.FullRowSelect = True '选择整⾏ListView1.GridLines = True '显⽰⽹络线/doc/e84a7b12866fb84ae45c8d40.html belWrap = True '图标可以换⾏ListView1.MultiSelect = True '可以选择多个项⽬ListView1.PictureAlignment = lvwTopLeft '图⽚对齐⽅式是左顶部,其他有右顶部(1)、左底部(2)、右底部(3)、居中(4)、平铺(5)ListView1.Checkboxes = True '显⽰复选框ListView1.DropHighlight = ListView1: ListItems.Item (2) '显⽰系统颜⾊获取当前⾏数和列数:MsgBox "⾏数:" & ListView1.ListItems.Count & "列数:" & ListView1.ColumnHeaders.CountPrivate Sub ListView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) ListView1.ToolTipText = "⾏数:" & ListView1.ListItems.Count & "列数:" &ListView1.ColumnHeaders.CountEnd Sub设置宽度:ListView1.ColumnHeaders.Add , , "备注" ,1500当前选中⾏:msgbox ListView1.SelectedItem.index获取复选框的值:msgbox ListView1.ListItems(1).Checked删除指定⾏:ListView1.ListItems.Remove 1去掉⿏标左键点击标签编辑:labeledit属性改为1读取某⾏第⼀列内容:ListView1.ListItems(i).Text读取某⾏第⼏列内容(不包括第⼀列):ListView1.ListItems(Num).SubItems(4)读取当前选中⾏第⼀列内容:ListView1.ListItems(ListView1.SelectedItem.Index).Text循环查找读取项⽬:Dim i As IntegerFor i = 1 To ListView1.ListItems.CountIf ListView1.ListItems(i).Text = 4 Then MsgBox ListView1.ListItems(i).Text '第⼀列If ListView1.ListItems(i).SubItems(1) = 4 Then MsgBox ListView1.ListItems(i).SubItems(1) '第⼆列Next i清空列表头:ListView1.ColumnHeaders.Clear清空列表:ListView1.ListItems.Clear右键菜单:Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)If Button = vbRightButton Then PopupMenu CommandLst '按下⿏标右键显⽰菜单End Sub当前选中判断:Dim NIf ListView1.ListItems.Count <> 0 Then N = ListView1.SelectedItem.Index Else MsgBox "当前没有任何主机在线!", vbInformation, "警告:": Exit SubIf N < 1 Then MsgBox "你没有选中任何主机!", vbInformation, "警告:": Exit SubVB设置某⾏为选中/⾮选中状态:ListView.ListItems(i).Selected = True '选中第i⾏ListView.ListItems(i).Selected = False '选中第i⾏⼀、View 属性ListView 控件作为⼀个可以显⽰图标或者⼦项的列表控件,它最重要的属性就是View属性,该属性决定了以哪种视图模式显⽰控件的项,这四种视图模式分别如下:[art_myurl]1、LartIcon:⼤图标视图模式,在项的⽂本旁显⽰⼤的图标,在控件宽度⾜够的情况下,项是如图⼀中的盘符⼀样优先以平⾏排列的,排列不完的则⾃动换⾏显⽰在新⾏中。
VBA窗体之ListView控件的基本应用VBA实例教程除非注明,文章均为战战如疯原创,转载请保留链接: /cat1/295.html,VBA交流群273624828。
今天我们来看一下VBA窗体中的ListView控件的基本用法。
ListView控件的最基本用法是在窗体中以表格形式显示数据,是应用非常广泛的一个窗体控件。
控件工具箱在初始状态下是没有ListView 控件的,需要我们在工具-附加控件中勾选"Microsoft ListView Control,Version 6.0",这样ListView控件就会显示在控件工具箱中了。
ListView分为表头和数据两部分,而数据部分的第一列和其他列又是分开的,需要用不同的方式来访问。
假设我们在Sheet1中有一个5行4列的表格,现在我们看下怎样将这个表格中的数据导入到ListView 控件中。
下面我们先来看怎样给ListView控件添加表头。
有两种方法,先来看第一种Private Sub UserForm_Initialize()ListView1.ColumnHeaders.Add 1, "A","姓名", ListView1.Width / 4,lvwColumnLeft '列数,key,text,宽度,对齐方式,图片ListView1.ColumnHeaders.Add 2, "B","性别", ListView1.Width / 4,lvwColumnCenterListView1.ColumnHeaders.Add 3, "C","年龄", ListView1.Width / 4,lvwColumnCenterListView1.ColumnHeaders.Add 4, "D","住址", ListView1.Width / 4,lvwColumnCenterListView1.View = lvwReport '显示方式ListView1.FullRowSelect = False '是否整行选取ListView1.Gridlines = True '是否显示表格线End Sub添加表头的第一种方法是用ColumnHeaders.Add的方法,该方法包括6个参数,比如上面第一行代码中1代表第一列,"A"是该列的一个简称(不写也可以),“姓名”是要显示的文字,下一个参数是宽度,这里我们一共4列,所以第一列宽度设为控件宽度(ListView1.Width)的1/4,第5个参数是对齐方式,其中第一列必须是左对齐的,其他列可以设置左右或居中对齐,第6个参数是图标索引,我们后面再讲,这里其中所有的参数都是可省略的,一般写上显示的文字和宽度即可。
VB2008中ListView两个常⽤效果的实现
ListView是⼀个简单实现的⽹格控件,在VB6.0中,这个控件因为很多缺陷⽽令⼈诟病。
在2008中,ListView有了不少改进,下⾯介绍两个常⽤效果的实现。
⼀、修改⾏⾼:
ListView控件没有⾏⾼这个属性,跟VB6.0⼀样,也只能使⽤ImageList控件来撑⾼的⽅式,但是实现起来却更简单,只需要三句代码即可。
ListView⾏⾼
1Dim ImgList As New ImageList
2 ImgList.ImageSize = New Size(1, 21)
3 ListView1.SmallImageList = ImgList
⼆、隔⾏背景换⾊:
在VB6.0中,要实现ListView控件的隔⾏背景换⾊,⼀般都是使⽤图⽚作背景,这种⽅法有个缺陷,就是Picture的⾼度有限制,如果ListView控件过⾼,那么下⾯的背景就显⽰不正常了。
在2008中,实现ListView隔⾏换⾊变得容易多了。
隔⾏背景换⾊
1 ListView1.Items.Item(1).UseItemStyleForSubItems = False'允许⼦单元颜⾊不⼀样
2If ListView1.Items.Count \ 2Mod2 = 0Then'隔⾏背景
3 ListView1.Items.Item(1).BackColor = Color.WhiteSmoke
4Else
5 ListView1.Items.Item(1).BackColor = Color.White
6End If
效果图如下:。
vba-listview控件操作Private Sub UserForm_Initialize()Dim iDim itm As ListItemDim liMe.ListView1.ColumnHeaders.Add 1, "Q", "QQ号", Me.ListView1.Width / 3 '添加第⼀列Me.ListView1.ColumnHeaders.Add 2, "N", "昵称", Me.ListView1.Width / 3, lvwColumnCenter '添加第⼆列Me.ListView1.ColumnHeaders.Add 2, "D", "地区", Me.ListView1.Width / 3, lvwColumnRight '添加第⼆列Me.ListView1.View = lvwReport '显⽰外观Me.ListView1.Gridlines = True '是否有表格线'For i = 2 To [A65535].End(xlUp).Row '使⽤集合的⽅法添加' Set itm = Me.ListView1.ListItems.Add(Text:=Cells(i, 1))' Set li = itm.ListSubItems.Add(Text:=Cells(i, 2)) '集合添加,就是添加新的⼀列' Set li = itm.ListSubItems.Add(Text:=Cells(i, 3)) '添加在上⼀句的后⾯''NextFor i = 2 To [A65535].End(xlUp).Row '使⽤数组的⽅法添加Set itm = Me.ListView1.ListItems.Add() '先添加⼀个⾏对象,是除开标题(colunmheaders)⾏的⾏对象itm.Text = Cells(i, 1) '⾏对象的第⼀列itm.SubItems(1) = Cells(i, 2) '⾏对像的第⼆列itm.SubItems(2) = Cells(i, 3) '⾏对像的第三列Next'subitems是⼀个string 数组'ListSubItems 是⼀个集合'me.ListView1.ColumnHeaders.Remove "D" 删除key 是D的列,即此处的地区列End Sub'Me.ListView1.View = lvwIcon '普通视图'Me.ListView1.View = lvwList '列表视图,上下排列,⽆表格线'Me.ListView1.View = lvwSmallIcon '⼩图标视图'Me.ListView1.View = lvwReport '报表视图,有标题,可⼼显⽰表格线Me.ListView1.ListItems.Clear '清除所有列'筛选功能其实就是写个判断,等于筛选框的值,再添加值即可'从listview中输⼊数据到表格中时,按列⽅向循环For i = 1 To Me.ListView1.ColumnHeaders.Count '取列标题个数开始循环,先取第⼀列的标题,,再是第⼆列,第三列 Cells(1, i) = Me.ListView1.ColumnHeaders(i)For j = 1 To Me.ListView1.ListItems.Count '⾏的循环If i = 1 ThenCells(j + 1, i) = Me.ListView1.ListItems(j).TextElseCells(j + 1, i) = Me.ListView1.ListItems(j).SubItems(i - 1)End IfNextNext'选取的⾏输⼊到⼯作表中Me.ListView1.SelectedItem '表⽰正在选择的⾏Me.ListView1.SelectedItem.Text '第⼀列的值Me.ListView1.SelectedItem.SubItems (1) '第⼆列的值Me.ListView1.SelectedItem.SubItems (2) '第三列的值'添加红⾊字体⾏直接⽤增加新的⾏Set xxx = Me.ListView1.ListItems.Add()xxx.SubItems(2) = 123xxx.SubItems(3) = 234xxx.ForeColor = RGB(255, 0, 0) '列表颜⾊。
Dim cn As ADODB.ConnectionDim rs As ADODB.Recordset'定义一个连接对象和一个查询返回结果集Set cn = New ADODB.ConnectionSet rs = New ADODB.Recordset'创建两个对象cn.ConnectionString = "driver=SQL Server;server=IAN-PC;uid=sa;pwd=kingdee;database=CRM" cn.OpenDim sql As Stringsql = "select * from ian_1"rs.Open sql, cnListView1.View = lvwReportListView1.ColumnHeaders.Add , , "选择", 1000ListView1.ColumnHeaders.Add , , rs(0).Name, 1000ListView1.ColumnHeaders.Add , , rs(1).Name, 1000ListView1.ColumnHeaders.Add , , rs(2).Name, 1000ListView1.ColumnHeaders.Add , , rs(3).Name, 1000ListView1.ColumnHeaders.Add , , rs(4).Name, 1000'表头名称ListView1.GridLines = True '显示网格ListView1.Checkboxes = True '显示复选框'ListView1.FullRowSelect = True 整行记录全选上Dim a As Integera = rs.RecordCount + 1'MsgBox aDim x As Integerx = 1'取得rs的记录集While Not rs.EOF And Not rs.BOF '如果记录集没有读完继续读ListView1.ListItems.Add , , x '第一行选择复选框ListView1.ListItems(x).SubItems(1) = rs(0).ValueListView1.ListItems(x).SubItems(2) = rs(1).ValueListView1.ListItems(x).SubItems(3) = rs(2).ValueListView1.ListItems(x).SubItems(4) = rs(3).ValueListView1.ListItems(x).SubItems(5) = rs(4).Valuex = x + 1rs.MoveNext '下一行WendMsgBox "dd"。
VBA窗体之ListView基本应用除非注明,文章均为战战如疯原创,转载请保留链接: cat4/298.html,VBA交流群273624828。
昨天在我们在VBA窗体之ListView基本应用中讲到了怎样设置ListView控件的表头和输入数据的两种方法,今天我们继续来看怎样将选中的数据输出和改变字体颜色。
我们先来看单行数据的输出Private Sub CommandButton2_Click()Dim iFor i = 1 ToListView1.ColumnHeaders.CountCells(7, i) =ListView1.ColumnHeaders(i) '输出表头If i = 1 ThenCells(8, i) =ListView1.SelectedItem.Text '第一列ElseCells(8, i) =ListView1.SelectedItem.SubItems(i - 1) '其他列End IfNextEnd Sub为了说明问题上面的代码我加了一个怎样输出表头的代码,平时用的话很少输出表头,SelectedItem表示被选中的那一行,自然第一列和其他列的表示方法还是分开的,不再多说了。
上面的代码是只选中一行的情况,那如果我选中了多行都需要输出怎么办,或者我要把整个ListView表格都输出怎么办?其实只要加一个判断该行是否选中的代码就可以了,选中的就输出,没选中的就不输出,输出全部的话连判断代码都免了。
直接看循环判断部分代码' For i = 1 To ListView1.ListItems.Count' If ListView1.ListItems(i).SelectedThen' MsgBox i & '行已经选中'' End If' Next上面的代码判断出哪行被选中,再对ListView.ListItems(i)进行操作即可。
VB用LISTVIEW读取EXCEL实例第一步:用EXCEL创建成绩表,如下图示例第二步:打开VB6创建一工程、标准窗口第三步:引用EXCEL,在菜单栏,工程——引用,如下图第四步:在工具栏加载控件Microsoft windows Common Controls 6.0 (SP6),如下图第五步:在标准窗口加入listview控件,控件属性设置如下图在“列首”标签添加字段名,如下图第五步:编写代码Dim xlapp As Excel.ApplicationPrivate Sub Form_Load()Set xlapp = CreateObject("excel.Application")xlapp.Visible = Falsexlapp.Workbooks.Open App.Path & "\成绩表.xls", , 1Dim litemDim i As Stringi = 2Do While xlapp.Cells(i, 1).Value <> "" '查找列中所有的单元格Set litem = ListView1.ListItems.Add()litem.Text = xlapp.Range("A" & i).Valuelitem.SubItems(1) = xlapp.Range("B" & i).Valuelitem.SubItems(2) = xlapp.Range("C" & i).Valuelitem.SubItems(3) = xlapp.Range("D" & i).Valuelitem.SubItems(4) = xlapp.Range("E" & i).Valuelitem.SubItems(5) = xlapp.Range("F" & i).Valuei = i + 1Loopxlapp.Workbooks("成绩表").Close savechanges:=Falsexlapp.QuitSet xlapp = NothingEnd Sub最后运行效果如下图。
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
'定义一个连接对象和一个查询返回结果集
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
'创建两个对象
cn.ConnectionString = "driver=SQL Server;server=IAN-PC;uid=sa;pwd=kingdee;database=CRM" cn.Open
Dim sql As String
sql = "select * from ian_1"
rs.Open sql, cn
ListView1.View = lvwReport
ListView1.ColumnHeaders.Add , , "选择", 1000
ListView1.ColumnHeaders.Add , , rs(0).Name, 1000
ListView1.ColumnHeaders.Add , , rs(1).Name, 1000
ListView1.ColumnHeaders.Add , , rs(2).Name, 1000
ListView1.ColumnHeaders.Add , , rs(3).Name, 1000
ListView1.ColumnHeaders.Add , , rs(4).Name, 1000
'表头名称
ListView1.GridLines = True '显示网格
ListView1.Checkboxes = True '显示复选框
'ListView1.FullRowSelect = True 整行记录全选上
Dim a As Integer
a = rs.RecordCount + 1
'MsgBox a
Dim x As Integer
x = 1
'取得rs的记录集
While Not rs.EOF And Not rs.BOF '如果记录集没有读完继续读
ListView1.ListItems.Add , , x '第一行选择复选框
ListView1.ListItems(x).SubItems(1) = rs(0).Value
ListView1.ListItems(x).SubItems(2) = rs(1).Value
ListView1.ListItems(x).SubItems(3) = rs(2).Value
ListView1.ListItems(x).SubItems(4) = rs(3).Value
ListView1.ListItems(x).SubItems(5) = rs(4).Value
x = x + 1
rs.MoveNext '下一行Wend
MsgBox "dd"。