语法:expression.FileDialog(fileDialogType)
返回一个 FileDialog 对象,该对象代表文件对话框的实例。
expression 必需。该表达式返回“应用于”列表中的对象之一。
fileDialogType MsoFileDialogType 类型,必需。文件对话框的类型。
MsoFileDialogType 可为以下 MsoFileDialogType 常量之一。 | |||||||||||||||||||||||||||||||||||||||||||||||||||
msoFileDialogFilePicker 允许用户选择一个文件。 | |||||||||||||||||||||||||||||||||||||||||||||||||||
msoFileDialogFolderPicker 允许用户选择一个文件夹。 | |||||||||||||||||||||||||||||||||||||||||||||||||||
msoFileDialogOpen 允许用户打开一个文件。 | |||||||||||||||||||||||||||||||||||||||||||||||||||
msoFileDialogSaveAs 允许用户保存一个文件。 http://club.excelhome.net/forum.php?mod=redirect&goto=findpost&ptid=1126466&pid=7672466一个实例
方法 :
属性:
在本示例中,Microsoft Excel 打开文件对话框,允许用户选择一个或多个文件。选中这些文件之后,Excel 将逐条显示每个文件的路径。 Sub UseFileDialogOpen() Dim lngCount As Long With Application.FileDialog(msoFileDialogOpen)'打开对话框 .AllowMultiSelect = True'允许文件多选 .Show For lngCount = 1 To .SelectedItems.Count'显示选中的文件 MsgBox .SelectedItems(lngCount) Next lngCount End With End Sub 示例2. Dim fd As FileDialog
ListView 控件是一款非常优秀的表格控件,对vba初学者来说,熟练地掌握此控件的用法,不仅能大大地增加自己学习vba的兴趣,而且对实际工作也有很好的帮助,本文将对ListView控件的各种用法作详细介绍,由于水平有限,若有不当之处,欢迎批评指正。 一、添加表头 ListView控件添加表头,一般在窗体的初始化事件中完成,假如给一ListView1控件添加姓名、性别、文化、住址、身份证可用以下代码实现: Private Sub UserForm_Initialize() ListView1.ColumnHeaders.Add , , "姓名", 40 ListView1.ColumnHeaders.Add , , "性别", 40 ListView1.ColumnHeaders.Add , , "文化", 40 ListView1.ColumnHeaders.Add , , "住址", 120 ListView1.ColumnHeaders.Add , , "身份证", 80 ListView1.View = lvwReport ListView1.FullRowSelect = True ListView1.Gridlines = True End Sub 在以上代码中40、40、40、120、80 代表该字段所在的列宽,在实际应用中,如何确定列宽对初学者来说是一个难点,这里给大家提供一个确定列宽的实用方法,通常ListView控件加载的数据都存放在一张excel工作表中,我们先在工作表中调整好列宽,然后用ListView控件需要加载的excel表格的列宽作为相应ListView控件的列宽即可,求列宽可用以vba代码实现(如求excel表格D列的列宽) Sub wdt() MsgBox Cells(1, "d").Width End Sub
其他属性介绍 ListView1.View = lvwReport,显示格式为报表格式 ListView1.FullRowSelect = True, 允许整行选中 ListView1.Gridlines = True, 显示网格线
在实际应用中,由于加载的对象都事先存储在excel表格中,我们在加载表头时还可以对代码进行优化,通过循环的方式,减少代码的编写量,比如有一张excel表格,首行为标题行,共有10个字段,加载该表头时可用以下代码简单实现: Private Sub UserForm_Initialize() For J = 1 To 10 ListView1.ColumnHeaders.Add , , Cells(1, J), Cells(1, J).Width Next ListView1.View = lvwReport ListView1.FullRowSelect = True ListView1.Gridlines = True End Sub
清除表头可用以下代码实现: ListView1.ColumnHeaders.Clear, 请大家记住该代码,在后面深入介绍中会应用到此语句。 二、ListView加载数据 我们学习了如何给ListView控件加载表头,在本章中我们将学习如何给ListView控件加载数据,假如ListView控件的表头为姓名、性别、文化、住址、身份证,张三的个人信息如下: 男、大学、南京市白下区、320123196610162018,将张三的个人信息加载给ListView 控件代码如下: Set Itm = ListView1.ListItems.Add() Itm.Text = "张三" Itm.SubItems (1) = "男" Itm.subitems(2) = "大学" Itm.subitems(3) = "南京市白下区" Itm.subitems(4) = "320123196610162018" 以上是加载1个人的信息,若现在有一张excel表格,其表名为《员工信息表》,该表首行为姓名、性别、文化、住址、身份证标题,从第2行到100行是99个人的个人信息,现在要将这99个人的个人信息加载到ListView控件中,可用循环方法实行,代码如下: For i = 2 To 100 Set Itm = ListView1.ListItems.Add() Itm.Text = Cells(i, 1) Itm.subitems(1) = Cells(i, 2) Itm.subitems(2) = Cells(i, 3) Itm.subitems(3) = Cells(i, 4) Itm.subitems(4) = Cells(i, 5) NextNext
ListView控件加载数据除上述加载方法之外,还有一种重要的数据加载方法即加载SQL查询记录集,以上述《员工信息表》为例,其查询、加载数据代码如下: Dim cn As Object, rs As Object Set cn = CreateObject("ADODB.Connection") '连接数据库 Set rs = CreateObject("ADODB.Recordset") cn.Open "dsn=excel files;dbq=" &ThisWorkbook.FullName Sql = "Select * from [员工信息表$] " rs.OpenSql, cn, 1, 3 ListView1.ListItems.Clear '清除ListView记录 Do While Not rs.EOF Set Itm=ListView1.ListItems.Add() '添加记录 Itm.Text = rs.Fields("姓名") '添加第一列内容 Itm.SubItems(1) = rs.Fields("性别") '添加第二列内容 Itm.SubItems(2) = rs.Fields("文化") '添加第三列内容 Itm.SubItems(3) = rs.Fields("住址") '添加第四列内容 Itm.SubItems(4) = rs.Fields("身份证") 添加第五列内容 rs.MoveNext Loop rs.Close: Set rs = Nothing: cn.Close 以上代码中牵涉到SQL查询相关知识点,对SQL查询不熟悉的朋友,可在网上查阅相关知 识进行学习,这样才能更好地理解上述代码,更加方便日后的实际应用。
三、ListView控件的重要属性和方法 在本章中我们将介绍ListView控件的一些重要属性和方法,望大家能牢记这些属性和方法。 1、对齐属性 ListView控件在初始化之前,为美观之需要,我们可以对每列数据排列格式进行设置,每列数据可或左对齐、或右对齐、或中间对齐,该项工作和加载表头同步进行,下面以加载“ 姓名”表头为例,其代码如下: 左对齐: ListView1.ColumnHeaders.Add , , "姓名", 40, lvwColumnLeft 右对齐: ListView1.ColumnHeaders.Add , , "姓名", 40,lvwColumnRight 中间对齐: ListView1.ColumnHeaders.Add , , "姓名", 40,lvwColumnCenter 这里需特别提醒ListView控件首列只能左对齐,否则代码会出现编译错误。 2、排序属性 ListView控件在初始化之前,可以根据用户需求对指定列进行排序,其代码如下: ListView1.Sorted = True 'listivew的排序属性为True时, ListView控件将对指定列进行排序,属性为False时ListView控件将不具有排序功能。 ListView1.SortKey = 0 ' 0为listivew排序的列索引号,0为第1列、1为第2列,以此类推,若此项属性值未设置,ListView控件将默认按首列排序。 如果我们想点击ListView表头排序,可用以下代码实现: Private Sub ListView1_ColumnClick(ByValColumnHeader As MSComctlLib.ColumnHeader) If ColumnHeader.Index - 1 > -1 Then ListView1.SortKey = ColumnHeader.Index - 1 End Sub 3、显示方式设置 ListView控件除了可以对数据排列格式进行设置外,还可以对数据显示方式进行设置,常见的有日期显示方式、金额显示方式,以单元格F3数据加载给ListView控件第2列为例,其代码如下: 日期显示方式: Itm.subitem1(1) = Format(Cells(3, "F"), "YYYYY-MM-DD") 金额显示方式: Itm.subitem1(1) = Format(Cells(3, "F"), "#0.00") 4、选择ListView控件任意一行,获取行号 I = ListView1.SelectedItem.Index 5、获取ListView控件第I行,首列的值 ListView1.ListItems(I).Text 6、获取ListView控件第I行,J列的值 ListView1.ListItems(I).SubItems(J - 1) 7、删除ListView控件第I行数据 ListView1.ListItems.Remove I 8、删除ListView控件所有数据 ListView1.ListItems.Clear 9、获取ListView控件记录数 ListView1.ListItems.Count 我们对ListView控件加载表头作了较为详尽的介绍,在实际应用中,由于加载的对象 ... 貌似应该是这样 Set Itm = ListView1.ListItems.Add() Itm.Text = "张三" Itm.subitems(1) = "男" Itm.subitems(2) = "大学" Itm.subitems(3) = "南京市白下区" Itm.subitems(4) = "320123196610162018" 以上是加载1个人的信息,若现在有一张excel表格,其表名为《员工信息表》,该表首行为姓名、性别、文化、住址、身份证标题,从第2行到100行是99个人的个人信息,现在要将这99个人的个人信息加载到ListView控件中,可用循环方法实行,代码如下: For i = 2 To 100 Set Itm = ListView1.ListItems.Add() Itm.Text = Cells(i, 1) Itm.subitems(1) = Cells(i, 2) Itm.subitems(2) = Cells(i, 3) Itm.subitems(3) = Cells(i, 4) Itm.subitems(4) = Cells(i, 5) Next
|
GMT+8, 2024-12-26 14:54 , Processed in 0.029244 second(s), 9 queries , Gzip On, MemCache On.
Powered by Discuz! X3.4
© 1999-2023 Wooffice Inc.
沪公网安备 31011702000001号 沪ICP备11019229号-2
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! 本站特聘法律顾问:李志群律师