ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: yuanzhuping

VBA常用技巧代码解析

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-3-15 18:21 | 显示全部楼层

谢谢

本帖已被收录到知识树中,索引项:开发帮助和教程
谢谢分享!

TA的精华主题

TA的得分主题

发表于 2009-3-15 18:22 | 显示全部楼层

谢谢

谢谢分享,慢慢学习!

TA的精华主题

TA的得分主题

发表于 2009-3-15 18:27 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-15 18:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

第6部分 使用对话框

技巧77         内置对话框
77-1        调用内置的对话框
       如果需要使用“打开”、“打印”等Excel内置对话框已经具有的功能,可以使用代码直接调用这些内置的对话框,如下面的代码所示。
  1. #001  Sub DialogOpen()
  2. #002      Application.Dialogs(xlDialogOpen).Show arg1:=ThisWorkbook.Path & "\*.xls"
  3. #003  End Sub
复制代码
代码解析:
       DialogOpen过程显示内置的“打开”对话框并选定示例所在的文件夹。
       显示内置对话框语法如下:
Application.Dialogs(xlDialogConst).Show
       Dialogs集合代表所有的内置对话框,每个Dialog对象代表一个内置对话框,不能新建内置对话框或向该集合中添加内置对话框。
       参数xlDialogConst是内置对话框的内置常量,每个常量都以“xlDialog”开头,其后是对话框的名称,如“打开”对话框的常量为“xlDialogOpen”。常用内置对话框的内置常量如表格所示。
Snap5.jpg
Snap6.jpg
       显示内置对话框使用Show方法,应用于Dialog对象的Show方法语法如下:
expression.Show(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10, Arg11, Arg12, Arg13, Arg14, Arg15, Arg16, Arg17, Arg18, Arg19, Arg20, Arg21, Arg22, Arg23, Arg24, Arg25, Arg26, Arg27, Arg28, Arg29, Arg30)
       参数expression是必需的,返回Dialog对象之一。
       参数arg1到参数arg30是可选的,仅应用于内置对话框,是命令的初始参数。若要查找要设置的参数,请在内置对话框参数列表中查找对应的对话框常量。
       运行alogOpen过程,显示内置的“打开”对话框,并且直接选定示例所在的文件夹,如图所示。
Snap1.jpg

77-2        获取选定文件的文件名
       如果只希望获取用户在显示的内置 “打开”对话框中选定文件的文件名,而不想真正打开该文件,那么可以使用GetOpenFilename方法,如下面的代码所示。
  1. #001  Sub OpenFilename()
  2. #002      Dim Filename As Variant
  3. #003      Dim mymsg As Integer
  4. #004      Dim i As Integer
  5. #005      Filename = Application.GetOpenFilename(Title:="删除文件", MultiSelect:=True)
  6. #006      If IsArray(Filename) Then
  7. #007          mymsg = MsgBox("是否删除所选文件?", vbYesNo, "提示")
  8. #008          If mymsg = vbYes Then
  9. #009              For i = 1 To UBound(Filename)
  10. #010                  Kill Filename(i)
  11. #011              Next
  12. #012          End If
  13. #013      End If
  14. #014  End Sub
复制代码
代码解析:
       OpenFilename过程使用GetOpenFilename方法显示标准的内置“打开”对话框,获取用户选定文件的文件名后使用Kill语句删除。
       GetOpenFilename方法显示标准的内置“打开”对话框,获取文件名,语法如下:
expression.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
       参数expression是必需的,返回一个Application对象。
       参数FileFilter是可选的,指定文件筛选条件的字符串。如果省略,则默认参数值为“所有文件(*.*)”。
       参数FilterIndex是可选的,指定默认文件筛选条件的索引号,取值范围为 1 到由 FileFilter 所指定的筛选条件数目。如果省略,或者取值大于可用筛选数目,则采用第一个文件筛选条件。
       参数Title是可选的,指定对话框的标题。如果省略,则使用“打开”作为标题。
       参数ButtonText是可选的,仅用于Macintosh。
       参数MultiSelect是可选的,如果该值为True,则允许选定多个文件名,如果该值为False,则只允许选定单个文件名。默认值为False。
       第5行代码显示标准的“打开”对话框,将对话框的标题设置为“删除文件”,将MultiSelect参数设置为True,允许选定多个文件。
       第6行代码,获得返回值。当用户选定文件后,返回的是选定的文件名或用户输入的文件名。因为MultiSelect参数已设置为True,所以返回值将是一个包含所有选定文件名的数组(即使仅选定了一个文件名)。如果用户取消了对话框,则该值为False。
       第8行到第12行代码,经询问用户后使用Kill语句从磁盘中删除用户选定的文件。
       运行OpenFilename过程,显示标准的内置“打开”对话框,删除用户选定的文件,如所图示。
Snap2.jpg
       注意 VBA中数组下界默认从0开始,但使用GetOpenFilename方法选择多个文件时返回的包含选定文件名的数组下界是从1开始。

77-3        使用“另存为”对话框
       在备份文件时可以使用GetSaveAsFilename方法显示标准的内置“另存为”对话框,获取备份文件的文件名和保存路径,而无须真正保存任何文件。如下面的代码所示。
  1. #001  Sub CopyFilename()
  2. #002      Dim NowWorkbook As Workbook
  3. #003      Dim FileName As String
  4. #004      On Error GoTo line
  5. #005      FileName = Application.GetSaveAsFilename _
  6. #006          (InitialFileName:="D:" & Date & " " & ThisWorkbook.Name, _
  7. #007          fileFilter:="Excel files(*.xls),*.xls,All files (*.*),*.*", _
  8. #008          Title:="数据备份")
  9. #009      If FileName <> "False" Then
  10. #010          Set NowWorkbook = Workbooks.Add
  11. #011          With NowWorkbook
  12. #012              .SaveAs FileName
  13. #013              ThisWorkbook.Sheets("Sheet2").UsedRange.Copy _
  14. #014              .Sheets("Sheet1").Range ("A1")
  15. #015              .Save
  16. #016          End With
  17. #017          GoTo line
  18. #018      End If
  19. #019      Exit Sub
  20. #020  line:
  21. #021      ActiveWorkbook.Close
  22. #022  End Sub
复制代码
代码解析:
       CopyFilename过程使用GetSaveAsFilename方法显示标准的内置“另存为”对话框,获取备份文件的文件名和保存路径,新建工作簿保存备份数据。
       第4行代码,错误处理语句。备份过程中,如果已存在同名工作簿,会出现如图所示的提示,如果选择了“否”,此时新工作簿已经建立,在执行第12行代码时发生错误,使程序中断,所以使用GoTo语句执行第21行代码,关闭新建立的工作簿。
Snap7.jpg
       第5行代码,使用GetSaveAsFilename方法显示标准的内置“另存为”对话框。GetSaveAsFilename方法的语法如下:
expression.GetSaveAsFilename(InitialFilename, FileFilter, FilterIndex, Title, ButtonText)
       参数expression是必需的,返回一个Application对象。
       参数InitialFilename是可选的,指定建议的文件名。如果省略,将活动工作簿的名称作为建议的文件名。
       参数FileFilter是可选的,指定文件筛选条件的字符串。
       参数FilterIndex是可选的,指定默认文件筛选条件的索引号,取值范围为 1 到 FileFilter 指定的筛选条件数目之间。如果省略,或者取值大于可用筛选数目,则采用第一个文件筛选条件。
       参数Title是可选的,指定对话框标题。如果省略,则使用默认标题。
       参数ButtonText是可选的,仅用于 Macintosh。
       第6行代码,设置对话框的保存路径为D盘,保存文件名为日期加工作簿名称。
       第7行代码,设置对话框文件保存类型为Excel文件类型。如果需要设置为文本类型需设置为“文本文件(*.txt), *.txt”,而如果是图片文件则需设置为“图片文件(*.bmp;*.jpg),* bmp;*.jpg”。
       第8行代码,设置对话框的标题为“数据备份”。
       第9行代码,如果用户没有取消操作。
       第10行到第16行代码,使用Add方法新建工作簿保存到对话框选定的路径中,将数据备份到新工作簿中。
       第17行代码,使用GoTo语句执行第21行代码,关闭新建工作簿和开启屏幕刷新。
       运行CopyFilename过程,显示内置“另存为”对话框,供用户备份工作簿数据,如图所示。
Snap3.jpg

技巧77 内置对话框.rar

20.54 KB, 下载次数: 1455

TA的精华主题

TA的得分主题

发表于 2009-3-15 18:28 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-3-15 18:29 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-3-15 18:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
慢慢学习,谢谢楼主!

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-15 18:30 | 显示全部楼层

第6部分 使用对话框

技巧78         调用操作系统“关于”对话框
       VBA程序开发完成后,有时需要一个“关于”对话框,除了使用窗体外,还可以调用操作系统的“关于”对话框,显示自定义的内容,如下面的代码所示。
  1. #001  Private Declare Function ShellAbout Lib "shell32.dll" Alias "ShellAboutA" ( _
  2. #002          ByVal hwnd As Long, ByVal szApp As String, _
  3. #003          ByVal szOtherStuff As String, ByVal hIcon As Long) As Long
  4. #004  Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
  5. #005          ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  6. #006  Private Sub CommandButton1_Click()
  7. #007      Dim ApphWnd As Long
  8. #008      ApphWnd = FindWindow("XLMAIN", Application.Caption)
  9. #009      ShellAbout ApphWnd, "财务处理系统", "yuanzhuping@yeah.net  0513-86548930", 0
  10. #010  End Sub
复制代码
代码解析:
       第1行到第5行代码是API函数声明。
       第8、9行代码调用操作系统的“关于”对话框并显示自定义的内容。
       代码运行后显示如图所示的对话框。

技巧78 调用操作系统“关于”对话框.rar

8.27 KB, 下载次数: 1357

TA的精华主题

TA的得分主题

发表于 2009-3-15 22:11 | 显示全部楼层

感谢楼主的辛苦!

有了楼主的无私奉献、辛苦劳累,才有了我们这些新手的进步!大恩不言谢,我们这些新手只有努力拜读你的大作,并努力运用于工作、生活中!

TA的精华主题

TA的得分主题

发表于 2009-3-15 22:19 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-28 16:37 , Processed in 0.043993 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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