ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 菜鸟学习VBA_001

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-6-7 23:05 | 显示全部楼层 |阅读模式
小弟以前没学过什么语言,一直想学这个,可是弄了好久还是摸不着头绪,希望这次能学会一二,望各位大侠多指点。

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-7 23:25 | 显示全部楼层

概念篇

宏:能够执行的一系列VBA语句,它是一个指令集合,可以使excel 完成用户指定的各项动作组合。
录制宏:要尽量减少不必要的动作,以免浪费运算时间

public sub skill_001()
Dim myversion as string
select case application.version
case "8.0"
myversion="97"
case "9.0"
myversion="2000"
case "10.0"
myversion="2002"
case "11.0"
myversion="2003"
case else
myversion="版本未知"
end select
Msgbox "excel 版本是:"&myversion
End sub


解释:
1.Public:

Public [WithEvents] varname[([subscripts])] [As [New] type] [,[WithEvents] varname[([subscripts])] [As [New] type]] . . .

WithEvents可选的。关键字,说明 varname 是用来响应由 ActiveX 对象触发的事件的对象变量。只有在类模块中才是合法的。使用 WithEvents,可以定义任意个所需的单个变量,但不能用 WithEvents 创建数组NewWithEvents 不能一起使用。
varname必需的。变量的名称;遵循标准的变量命名约定。
subscripts可选的。数组变量的维数;最多可以定义 60 维的多维数组。subscripts 参数使用下面的语法:
[lower To] upper [,[lower To] upper] . . .
如果不显式指定 lower,则数组的下界由 Option Base 语句控制。如果没有 Option Base 语句则下界为 0。
New可选的。用它可以隐式地创建对象的关键字。如果使用 New 声明对象变量,则在第一次引用该变量时创建该对象的新实例,因此不必使用 Set 语句来对该对象引用赋值。New 关键字不能用来声明任何内部数据类型的变量以及从属对象的实例,也不能与 WithEvents 一起使用。
type可选的。变量的数据类型;可以是 ByteBooleanIntegerLongCurrencySingleDoubleDecimal(目前尚不支持)、DateString(对变长的字符串)、String * length(对定长的字符串)、ObjectVariant用户定义类型,或对象类型。所声明的每个变量都要有一个单独的 As type 子句。



说明
Public 语句声明的变量在所有应用程序的所有没有使用 Option Private Module 的模块的任何过程中都是可用的;若该模块使用了 Option Private Module,则该变量只是在其所属工程中是公用的。
小心 不能在类模块中使用 Public 语句来声明一个定长的字符串变量。
使用 Public 语句可以声明变量的数据类型。例如,下面的语句声明了一个 Integer 类型的变量。
Public NumberOfEmployees As Integer也可以使用 Public 语句来声明变量的对象类型。下面的语句为工作表的新实例声明了一个变量。
Public X As New Worksheet如果在定义对象变量时没有使用 New 关键字,则在使用该变量之前,必须使用 Set 语句将一个已有的对象赋给这个引用对象的变量。在被赋值之前,所声明的这个对象变量有一个特定值 Nothing,这个值表示该变量没有指向任何对象的实例。
可以用带空圆括号的 Public 语句来声明动态数组。在声明了动态数组之后,可以在过程内用 ReDim 语句来定义该数组的维数和元素。如果试图在 Private、Public Dim 语句中重定义一个已被显式定义了大小的数组的维数,就会发生错误。
如果不指定数据类型或对象类型,且在模块中没有使用 Deftype 语句,则按缺省情况该变量为 Variant 类型。
当初始化变量时,数值变量被初始化为 0,变长的字符串被初始化为一个零长度的字符串 (""),而定长的字符串则用 0 填充。Variant 变量被初始化为 Empty。用户自定义类型的变量的每个元素都作为各自独立的变量进行初始化。

2.Dim
通常会使用 Dim 语句来声明变量。一个声明语句可以放到过程中以创建属于过程的级别的变量。或在声明部分可将它放到模块顶部,以创建属于模块级别的变量。
下面的示例创建了变量 strName 并且指定为 String 数据类型
Dim strName As String如果该语句出现在过程中,则变量 strName 只可以在此过程中被使用。如果该语句出现在模块的声明部分,则变量 strName 可以被此模块中所有的过程所使用,但是不能被同一工程中不同的模块所含过程来使用。为了使变量可被工程中所有的过程所使用,则在变量前加上 Public 语句,如以下的示例:
Public strName As String关于命名变量的详细信息,请参阅 Visual Basic 帮助中的“Visual Basic 命名规则”。
变量可以声明成下列数据类型中的一种:BooleanByteIntegerLongCurrencySingleDoubleDateString(变长字符串)、String * length (定长字符串)、ObjectVariant。如果未指定数据类型,则 Variant 数据类型被赋予缺省。也可以使用 Type 语句来创建用户定义类型。关于数据类型的详细信息,请参阅 Visual Basic 帮助中的“数据类型总结”。
可以在一个语句中声明几个变量。而为了指定数据类型,必须将每一个变量的数据类型包含进来。在下面的语句中,变量 intXintY、与 intZ 被声明为 Integer 类型。
Dim intX As Integer, intY As Integer, intZ As Integer在下面的语句中,变量 intX intY 被声明为 Variant 类型 ;只有 intZ 被声明为 Integer 类型。
Dim intX, intY, intZ As Integer在声明语句中,不一定要提供变量的数据类型。若省略了数据类型,则会将变量设成 Variant 类型。
使用 Public 语句可以使用 Public 语句去声明公共模块级别变量。
Public strName As String公有变量可用于工程中的任何过程。如果公有变量是声明于标准模块或是类模块中,则它也可以被任何引用到此公有变量所属工程的工程中使用。
使用 Private 语句可以使用 Private 语句去声明私有的模块级别变量。
Private MyName As String私有变量只可使用于同一模块中的过程。
注意 在模块级别中使用 Dim 语句与使用 Private 语句是相同的。不过使用 Private 语句可以更容易的读取和解释代码。
使用 Static 语句当使用 Static 语句取代 Dim 语句时,所声明的变量在调用时仍保留它原先的值。
使用 Option Explicit 语句在 Visual Basic 中可以简单地通过一个赋值语句来隐含声明变量。所有隐含声明变量都为 Variant 类型,而 Variant 类型变量比大多数其它类型的变量需要更多的内存资源。如果显示地声明变量为指定的数据类型,则应用程序将更有效。显示声明所有变量减少了命名冲突以及拼写错误的发生率。
如果不想使 Visual Basic 生成隐含声明,可以将 Option Explicit 语句放置于模块中所有的过程之前。这一个语句要求对模块中所有的变量做显示地声明。如果模块包含 Option Explicit 语句,则当 Visual Basic 遇到一个先前未定界的变量或拼写错误,它会发生编译时间的错误。
可以设置 Visual Basic 程序环境中的某个选项,使得自动在所有新的模块中包含 Option Explicit 语句。请参阅应用程序的文档来得知如何更改 Visual Basic 环境选项,请注意这个选项并不会改变已写好的存在的代码。
注意 必须显示地声明固定大小的数组与动态数组。
为自动化声明一个对象变量当使用一个应用程序去控制另外一个应用程序的对象时,应该设置一个对于其它应用程序的类型库的引用。若设置一个引用,则可以根据它们最常指定的类型来声明对象变量。例如,如果是在 Microsoft Word 中,当对 Microsoft Excel 类型库做一引用设置时,可以在 Microsoft Word 中声明 Worksheet 类型的变量来表示 Microsoft Excel 中的 Worksheet 对象。
如果使用其它的应用程序去控制 Microsoft Access 对象,在多数情况下,可以根据它们最常指定的类型来声明对象变量。也可以使用关键字 New 去自动生成一个对象的新实例。然而,可能要指示它是 Microsoft Access 对象。例如,当在 Microsoft Visual Basic 里面声明一个对象变量去表示 Microsoft Access form 时,必须区别它是 Microsoft Access Form 对象或是 Visual Basic Form 对象。所以在声明变量的语句中必须要包含类型库的名称,如下面示例所示:
Dim frmOrders As New Access.Form某些应用程序并不能识别特别的 Microsoft Access 对象类型。既使已经在这些应用程序中设置了一个对 Microsoft Access 类型库的引用,必须声明所有 Microsoft Access 对象变量为 Object 类型。不能使用 New 关键字去创建这个对象的新实例。下面的示例显示了,不能识别 Microsoft Access 对象类型的应用程序,如何去声明一个变量用来表示 Microsoft Access Application 对象。然后应用程序创建一个 Application 对象的实例。
Dim appAccess As ObjectSet appAccess = CreateObject("Access.Application")若想知道应用程序支持那些语法,请参阅应用程序的文档。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-12 08:14 , Processed in 0.031498 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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