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-13 09:58 | 显示全部楼层
本帖已被收录到知识树中,索引项:开发帮助和教程
看楼猪的帖子入神了,红包又没抢到~~~

TA的精华主题

TA的得分主题

发表于 2009-3-13 10:36 | 显示全部楼层
要慢慢学习了啊,哈哈

TA的精华主题

TA的得分主题

发表于 2009-3-13 10:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主这个贴子太棒了!学之不尽,用之不竭!谢谢!楼主辛苦了。

TA的精华主题

TA的得分主题

发表于 2009-3-13 13:08 | 显示全部楼层

TA的精华主题

TA的得分主题

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

第6部分 使用对话框

技巧76         使用InputBox方法
       在Excel中输入简单的数据可以使用InputBox函数显示的对话框,但是如果输入的数据类型不匹配时,过程运行时会产生意外错误。为了避免此类情况发生,可以使用另一种获得用户输入的方式——InputBox方法。
76-1        输入指定类型的数据
       使用InputBox方法输入数据时可以指定数据的类型,如下面的代码所示。
  1. #001  Sub dInput()
  2. #002      Dim dInput As Double
  3. #003      Dim r As Integer
  4. #004      r = Sheet1.Range("A65536").End(xlUp).Row
  5. #005      dInput = Application.InputBox(Prompt:="请输入数字:", Type:=1)
  6. #006      If dInput <> False Then
  7. #007          Sheet1.Cells(r + 1, 1).Value = dInput
  8. #008      Else
  9. #009          MsgBox "你已取消了输入!"
  10. #010      End If
  11. #011  End Sub
复制代码
代码解析:
       dInput过程使用InputBox方法显示一个提示用户输入数字的对话框。
       InputBox方法显示一个接收用户输入的对话框,返回此对话框中输入的信息,语法如下:
expression.InputBox(Prompt, Title, Default, Left, Top, HelpFile, HelpContextId, Type)
       参数expression是必需的,返回一个Application对象。
       参数Prompt是必需的,作为对话框消息显示的字符串表达式。
       参数Title是可选的,作为显示在对话框标题栏中的字符串表达式。如果省略Title参数,将使用默认的标题。
       参数Default是可选的,在对话框显示时出现在文本框中的初始值。如果省略Default参数,则文本框为空。
       参数Left是可选的,指定对话框相对于屏幕左上角的 x 坐标。
       参数Top是可选的,指定对话框相对于屏幕左上角的 y 坐标。
       参数HelpFile和参数HelpContextId是可选的,为对话框提供上下文相关的帮助和编号,如果提供了其中一个参数,则必须提供另一个参数,两者缺一不可。
       参数Type是可选的,指定返回的数据类型。如果省略Type参数,对话框将返回文本。
       InputBox方法的语法和InputBox函数的语法相似,最大的区别在于最后一个参数——Type。通过Type参数可以指定返回值的数据类型,表格中列出了Type参数可以使用的数值。
Snap1.jpg
       这些数值可以相加使用,如果希望返回数字和文本,可以将Type参数设置为1+2。
       InputBox方法与InputBox函数相比,优点是内置的出错处理。在第5行代码中将Type参数值设置为1,这意味着对话框只能输入数值。当用户输入的不是数值时,显示一个如图所示的消息框提示输入错误。
Snap2.jpg
       第6行到第10行代码,如果用户单击对话框的“确定”按钮,将用户输入的数字写入工作表的A列单元格。如果用户单击对话框的“取消”按钮,则显示一条提示消息。
       InputBox方法和InputBox函数的另一个区别是,当用户单击“取消”按纽时返回False而不是长度为零的字符串。
       运行dInput过程将显示一个提示用户输入数字的对话框,如图所示。
Snap3.jpg
注意 在VBA代码中,Application.InputBox 调用的是InputBox方法,不带对象识别符的InputBox调用的是InputBox 函数。

76-2        获得单元格区域地址
       InputBox方法很适合用户选择工作表单元格区域,并对所选择的单元格区域进行操作,如下面的代码所示。
  1. #001  Sub RngInput()
  2. #002      Dim rng As Range
  3. #003      On Error GoTo line
  4. #004      Set rng = Application.InputBox("请使用鼠标选择单元格区域:", , , , , , , 8)
  5. #005      rng.Interior.ColorIndex = 15
  6. #006  line:
  7. #007  End Sub
复制代码
代码解析:
       RngInput过程使用InputBox方法显示一个对话框,提示用户在工作表中选择一个单元格区域,并改变所选单元格区域内部的颜色。
       第3行代码,错误处理语句。因为当对话框显示后,如果用户单击“取消”按钮,将显示一错误信息,如图所示,所以必需使用On Error GoTo语句来绕过错误。
Snap4.jpg
       第4行代码,使用Set语句将用户选择的单元格区域赋给变量rng。当Type参数设置为8时,将返回一个Range对象,必须用Set 语句将结果指定给一个Range对象。
       第5行代码,改变用户所选单元格区域内部的颜色。
       运行RngInput过程,将显示一个对话框,提示用户在工作表中选择一个单元格区域,并改变所选单元格区域内部的颜色,如图所示。
Snap5.jpg

技巧76 使用InputBox方法.rar

12.58 KB, 下载次数: 1628

TA的精华主题

TA的得分主题

发表于 2009-3-13 15:35 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-3-13 16:43 | 显示全部楼层
原帖由 yuanzhuping 于 2009-2-25 07:58 发表 ~~~~技巧48         保存指定工作表为工作簿文件..

版主辛苦了。非常受益,感谢感谢!
保存指定工作表为工作薄文件,如果文件名称已经存在,就会报错。代码中应该写才能强制覆盖旧文件?

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-13 17:02 | 显示全部楼层
原帖由 SUNHAICHUAN 于 2009-3-13 16:43 发表

版主辛苦了。非常受益,感谢感谢!
保存指定工作表为工作薄文件,如果文件名称已经存在,就会报错。代码中应该写才能强制覆盖旧文件?

加个错误处理吧
  1. Sub SheetCopy()
  2.     On Error GoTo line
  3.     ActiveSheet.Copy
  4.     ActiveWorkbook.Close SaveChanges:=True, Filename:=ThisWorkbook.Path & "\SheetCopy.xls"
  5.     Exit Sub
  6. line:
  7.     ActiveWorkbook.Close False
  8. End Sub
  9. Sub ArrSheetCopy()
  10.     On Error GoTo line
  11.     Worksheets(Array("Sheet1", "Sheet2")).Copy
  12.     ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\ArrSheetCopy.xls"
  13.     ActiveWorkbook.Close SaveChanges:=True
  14.     Exit Sub
  15. line:
  16.     ActiveWorkbook.Close False
  17. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2009-3-13 17:23 | 显示全部楼层
啊,知识量很很大,要学好久呀,怎么才能一次性D下来慢慢学习呢?

TA的精华主题

TA的得分主题

发表于 2009-3-13 20:58 | 显示全部楼层
太感谢楼主了,今年一定要把VBA搞定
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-24 21:37 , Processed in 0.053097 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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