搜档网
当前位置:搜档网 › Excel VBA函数参考手册

Excel VBA函数参考手册

Excel VBA函数参考手册
Excel VBA函数参考手册

Excel VBA 学习资料

年月日

Excel VBA 学习资料 (1)

函 (1)

数 (1)

参 (1)

考 (1)

手 (1)

册 (1)

摘自Excel2003VBA帮助 ............................................................................... 错误!未定义书签。2008年10月27日Abs 函数 .. (1)

Abs 函数 (6)

导出的数学函数 (6)

Array 函数 (7)

Asc 函数 (8)

Atn 函数 (9)

CallByName 函数 (9)

CBool等类型转换函数 (10)

语法 (10)

返回类型 (10)

说明 (11)

Choose 函数 (13)

Chr 函数 (14)

Command 函数 (15)

Cos 函数 (16)

CreateObject 函数 (17)

CurDir 函数 (18)

CVErr 函数 (19)

Date 函数 (20)

DateAdd 函数 (20)

DateDiff 函数 (21)

DatePart 函数 (23)

DateSerial 函数 (25)

DateValue 函数 (26)

Day 函数 (27)

DDB 函数 (27)

Dir 函数 (28)

DoEvents 函数 (30)

Environ 函数 (31)

EOF 函数 (32)

Error 函数 (33)

Exp 函数 (33)

FileAttr 函数 (34)

FileDateTime 函数 (34)

Filter函数 (35)

Fix 、Int函数 (36)

Format 函数 (37)

FormatCurrency函数 (40)

FormatDateTime函数 (41)

FormatNumber函数 (41)

FormatPercent函数 (42)

FreeFile 函数 (43)

FV 函数 (44)

GetAllSettings 函数 (45)

GetAttr 函数 (46)

GetObject 函数 (47)

GetSetting 函数 (51)

Hex 函数 (52)

Hour 函数 (52)

IIf 函数 (53)

IMEStatus 函数 (53)

Input 函数 (54)

InputBox 函数 (55)

InStr 函数 (57)

InStrRev函数 (58)

IPmt 函数 (60)

IRR 函数 (61)

IsArray 函数 (62)

IsDate 函数 (63)

IsEmpty 函数 (63)

IsError 函数 (64)

IsMissing 函数 (64)

IsNull 函数 (65)

IsNumeric 函数 (66)

IsObject 函数 (67)

Join函数 (67)

LBound 函数 (67)

LCase 函数 (68)

Left 函数 (69)

Len 函数 (70)

Loc 函数 (71)

LOF 函数 (71)

Log 函数 (72)

LTrim、RTrim与Trim 函数 (72)

MacID 函数 (73)

MacScript 函数 (75)

Mid 函数 (75)

MIRR 函数 (76)

Month 函数 (77)

MonthName函数 (78)

MsgBox 函数 (78)

Now 函数 (81)

NPer 函数 (81)

NPV 函数 (83)

Oct 函数 (84)

Partition 函数 (84)

Pmt 函数 (86)

PPmt 函数 (87)

PV 函数 (89)

QBColor 函数 (90)

Rate 函数 (91)

Replace函数 (92)

RGB 函数 (94)

Right 函数 (95)

Rnd 函数 (96)

Round函数 (96)

Second 函数 (97)

Seek 函数 (97)

Sgn 函数 (98)

Shell 函数 (99)

Sin 函数 (100)

SLN 函数 (101)

Space 函数 (102)

Spc 函数 (102)

Split函数 (103)

Sqr 函数 (104)

Str 函数 (104)

StrComp 函数 (105)

StrConv 函数 (106)

StrReverse函数 (107)

String 函数 (108)

Switch 函数 (108)

SYD 函数 (109)

Tab 函数 (110)

Tan 函数 (111)

Time 函数 (112)

Timer 函数 (112)

TimeSerial 函数 (112)

TimeValue 函数 (113)

TypeName 函数 (114)

UCase 函数 (116)

Val 函数 (116)

VarType 函数 (117)

Weekday 函数 (118)

WeekdayName函数 (119)

Year 函数 (120)

Abs 函数

返回参数的绝对值,其类型和参数相同。

语法

Abs(number)

必要的number参数是任何有效的数值表达式,如果number 包含 Null,则返回Null,如果number 是未初始化的变量,则返回 0。

说明

一个数的绝对值是将正负号去掉以后的值。例如,ABS(-1) 和 ABS(1) 都返回 1。Abs 函数示例

本示例使用Abs函数计算数的绝对值。

Dim MyNumber

MyNumber = Abs(50.3) ' 返回 50.3。

MyNumber = Abs(-50.3) ' 返回 50.3。

请参阅:

Sgn 函数、数学函数中的Abs 函数、Atn 函数、Cos 函数、Exp 函数、Fix 函数、Int 函数、Log 函数、Rnd 函数、Sgn 函数、Sin 函数、Sqr 函数、Tan 函数、导出的数学函数:

导出的数学函数

以下为非基本数学函数的列表,皆可由基本数学函数导出:

Array 函数

返回一个包含数组的 Variant。

语法

Array(arglist)

所需的arglist参数是一个用逗号隔开的值表,这些值用于给Variant所包含的数组的各元素赋值。如果不提供参数,则创建一个长度为 0 的数组。

说明

用来表示数组元素的符号由变量名、圆括号以及括号中的所需元素的索引号组成。在下面的示例中,第一条语句创建一个Variant 的变量 A。第二条语句将一个数组赋给变量 A。最后一条语句将该数组的第二个元素的值赋给另一个变量。

Dim A As Variant

A = Array(10,20,30)

B = A(2)

使用Array函数创建的数组的下界受Option Base语句指定的下界的决定, 除非Array是由类型库(例如VBA.Array )名称限定。如果是由类型库名称限定,则Array不受Option Base的影响。

注意没有作为数组声明的Variant 也可以表示数组。除了长度固定的字符串以及用户定义类型之外,Variant 变量可以表示任何类型的数组。尽管一个包含数组的Variant 和一个元素为Variant 类型的数组在概念上有所不同,但对数组元素的访问方式是相同的。

Array 函数示例

该示例使用Array函数来返回一个包含Variant 的数组。

Dim MyWeek, MyDay

MyWeek = Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")

'返回值假设下界的设置为 1(使用 Option Base

' 语句)。

MyDay = MyWeek(2) 'MyDay 的值为 "Tue"。

MyDay = MyWeek(4) 'MyDay 的值为 "Thu"。

Asc 函数

返回一个 Integer,代表字符串中首字母的字符代码。

语法

Asc(string)

必要的string 参数可以是任何有效的字符串表达式。如果string中没有包含任何字符,则会产生运行时错误。

说明

在非 DBCS 系统下,返回值范围为 0 –255 。在 DBCS 系统下,则为 -32768 –32767。

注意AscB函数作用于包含在字符串中的字节数据,AscB 返回第一个字节的字符代码,而非字符的字符代码。AscW函数返回 Unicode 字符代码,若平台不支持 Unicode,则与Asc函数功能相同。

Asc 函数示例

本示例使用Asc函数返回字符串首字母的字符值(ASCII 值)。

Dim MyNumber

MyNumber = Asc("A") ' 返回 65。

MyNumber = Asc("a") ' 返回 97。

MyNumber = Asc("Apple") ' 返回 65。

Atn 函数

返回一个 Double,指定一个数的反正切值。

语法

Atn(number)

必要的number参数是一个 Double或任何有效的数值表达式。

说明

Atn函数的参数值 (number) 为直角三角形两边的比值并返回以弧度为单位的角。这个比值是角的对边长度除以角的邻边长度之商。

值的范围在-pi/2 和 pi/2 弧度之间。

为了将角度转换为弧度,请将角度乘以 pi/180。为了将弧度转换为角度,请将弧度乘以 180/pi。

注意Atn是Tan 的反三角函数,Tan 的参数值为角度,返回直角三角形的两条边的比值。不要将Atn和余切函数混淆,余切函数值是正切函数值的倒数,cotangent = (1/tangent)。

Atn 函数示例

本示例使用Atn函数计算圆周率。

Dim pi

pi = 4 * Atn(1) ' 计算圆周率。

CallByName 函数

执行一个对象的方法,或者设置或返回一个对象的属性。

语法

CallByName(object, procname, calltype,[args()])

说明

CallByName函数用于获取或者设置一个属性,或者在运行时使用一个字符串名称来调用一个方法。

在下面的例子中,第一行使用CallByName来设置一个文本框的MousePointer 属性,第二行得到MousePointer属性的值,第三行调用Move方法来移动文本框:

CallByName Text1, "MousePointer", vbLet, vbCrosshair

Result = CallByName (Text1, "MousePointer", vbGet)

CallByName Text1, "Move", vbMethod, 100, 100

CBool等类型转换函数

每个函数都可以强制将一个表达式转换成某种特定数据类型。

语法

CBool(expression)CByte(expression)CCur(expression)CDate(expression) CDbl(expression)CDec(expression)CInt(expression)CLng(expression) CSng(expression)CStr(expression)CVar(expression)

必要的expression参数可以是任何字符串表达式或数值表达式。

返回类型

说明

如果传递给函数的expression 超过转换目标数据类型的范围,将发生错误。通常,在编码时可以使用数据类型转换函数,来体现某些操作的结果应该表示为特定的数据类型,而不是缺省的数据类型。例如,当单精度、双精度或整数运算发生的情况下,使用CCur 来强制执行货币运算。

应该使用数据类型转换函数来代替Val,以使国际版的数据转换可以从一种数据类型转换为另一种。例如,当使用Ccur 时,不同的小数点分隔符、千分位分隔符和各种货币选项,依据系统的区域设置都会被妥善识别。

当小数部分恰好为 0.5 时,Cint 和CLng 函数会将它转换为最接近的偶数值。例如,0.5 转换为 0、1.5 转换为 2。Cint 和CLng 函数不同于Fix 和Int 函数,Fix 和Int 函数会将小数部分截断而不是四舍五入。并且Fix 和Int 函数总是返回与传入的数据类型相同的值。

使用IsDate函数,可判断date 是否可以被转换为日期或时间。Cdate 可用来识别日期文字和时间文字,以及落入可接受的日期范围内的数值。当转换一个数字成为日期时,是将整数部分转换为日期,小数部分转换为从午夜起算的时间。CDate 依据系统上的区域设置来决定日期的格式。如果提供的格式为不可识别的日期设置,则不能正确判断年、月、日的顺序。另外,长日期格式,若包含有星期的字符串,也不能被识别。

CVDate函数也提供对早期 Visual Basic 版本的兼容性。CVDate函数的语法与CDate函数是完全相同的,不过,CVDate是返回一个Variant,它的子类型是Date,而不是实际的Date 类型。因为现在已有真正的Date类型,所以CVDate 也不再需要了。转换一个表达式成为Date,再赋值给一个Variant,也可以达到同样的效果。也可以使用这种技巧将其他真正的数据类型转换为对等的Variant 子类型。

注意 CDec函数不能返回独立的数据类型,而总是返回一个Variant,它的值已经被转换为Decimal 子类型。

CBool 函数示例

本示例使用CBool函数来将一表达式转成Boolean值。如果表达式的结果为非零的值,CBool返回True;否则返回False。

Dim A, B, Check

A = 5:

B = 5 ' 设置变量初值。

Check = CBool(A = B) ' Check 的值为 True。

A = 0 ' 定义变量。

Check = CBool(A) ' Check 的值为 False。

CByte 函数示例

本示例使用CByte函数将一表达式转成Byte。

Dim MyDouble, MyByte

MyDouble = 125.5678 ' MyDouble 为Double(双精度)。

MyByte = CByte(MyDouble) ' MyByte 值为 126。

CCur 函数示例

本示例使用CCur函数将表达式转成Currency。

Dim MyDouble, MyCurr

MyDouble = 543.214588 ' MyDouble 为 Double 类型。

MyCurr = CCur(MyDouble * 2) ' 将 MyDouble * 2 的结果

' (1086.429176)转换为 Currency (1086.4292)。

CDate 函数示例

本示例使用CDate函数将字符串转换成Date。一般说来,字符串格式的日期与时间硬编码(如示例中所示)并不好。较好的做法是使用日期原义表达式和时间的原义表达式(如 #2/12/1969#,#4:45:23 PM#)。

Dim MyDate, MyShortDate, MyTime, MyShortTime

MyDate = "February 12, 1969" ' 定义日期。

MyShortDate = CDate(MyDate) ' 转换为 Date 数据类型。

MyTime = "4:35:47 PM" ' 定义时间。

MyShortTime = CDate(MyTime) ' 转换为 Date 数据类型。

CDbl 函数示例

本示例使用CDbl函数将表达式转换为Double 类型。

Dim MyCurr, MyDouble

MyCurr = CCur(234.456784) ' MyCurr 为 Currency 类型。

MyDouble = CDbl(MyCurr * 8.2 * 0.01) ' 将结果转换为 Double 类型。CDec 函数示例

该示例使用CDec函数将数字值转换为Decimal。

Dim MyDecimal, MyCurr

MyCurr = 10000000.0587 ' MyCurr 是货币。

MyDecimal = CDec(MyCurr) ' MyDecimal 是二进制数。

CInt 函数示例

本示例使用CInt函数将一数值转换为Integer。

Dim MyDouble, MyInt

MyDouble = 2345.5678 ' MyDouble 为 Double 类型。

MyInt = CInt(MyDouble) ' MyInt 的值为 2346。

CLng 函数示例

本示例使用CLng函数将一数值转换为Long。

Dim MyVal1, MyVal2, MyLong1, MyLong2

MyVal1 = 25427.45: MyVal2 = 25427.55 ' MyVal1、MyVal2 均为 Double 类型。

MyLong1 = CLng(MyVal1) ' MyLong1 的值为 25427。

MyLong2 = CLng(MyVal2) ' MyLong2 的值为 25428。

CSng 函数示例

本示例使用CSng函数将一数值转换为Single。

Dim MyDouble1, MyDouble2, MySingle1, MySingle2

' MyDouble1、MyDouble2 均为 Double 类型。

MyDouble1 = 75.3421115: MyDouble2 = 75.3421555

MySingle1 = CSng(MyDouble1) ' MySingle1 的值为 75.34211。MySingle2 = CSng(MyDouble2) ' MySingle2 的值为 75.34216。

CStr 函数示例

本示例使用CStr函数将一数值转换为String。

Dim MyDouble, MyString

MyDouble = 437.324 ' MyDouble 为 Double 类型。

MyString = CStr(MyDouble) ' MyString 的内容为“437.324”。

CVar 函数示例

本示例使用CVar函数将表达式转换为Variant。

Dim MyInt, MyVar

MyInt = 4534 ' MyInt 为 Integer 类型。

MyVar = CVar(MyInt & "000") ' MyVar 的内容为字符串“4534000”。Choose 函数

从参数列表中选择并返回一个值。

语法

Choose(index, choice-1[, choice-2, ... [, choice-n]])

说明

Choose 会根据index 的值来返回选择项列表中的某个值。如果index 是 1,则Choose会返回列表中的第 1 个选择项。如果index 是 2,则会返回列表中的第 2 个选择项,以此类推。

可以使用Choose 来查阅一个列表中的项目。例如,如果index 所指定的值为3,而choice-1= "one"、choice-2= "two"、且choice-3= "three",那么Choose 将返回 "three"。当index 代表一选项组中的值时,则这项功能将会特别有用。即使它只返回一个选项值,Choose 仍然会计算列表中的每个选择项。所以应该注意到这项副作用。例如,当在每个选择项表达式中使用了MsgBox函数作为其中的一部分时,每计算一个选择项,就会显示一次消息框。

当index小于 1 或大于列出的选择项数目时,Choose 函数返回 Null。

如果index不是整数,则会先四舍五入为与其最接近的整数。

Choose 函数示例

本示例使用Choose函数来显示一个名称,该名称对应於用 Ind 参数传递到过程之中的索引。

Function GetChoice(Ind As Integer)

GetChoice = Choose(Ind, "Speedy", "United", "Federal")

End Function

Chr 函数

返回 String,其中包含有与指定的字符代码相关的字符。

语法

Chr(charcode)

必要的charcode参数是一个用来识别某字符的 Long。

说明

0 到 31 之间的数字与标准的非打印 ASCII 代码相同。例如,Chr(10)可以返回换行字符。charcode 的正常范围为 0 –255。然而,在 DBCS 系统,charcode 的实际范围为 -32768 到 65535。

注意ChrB函数作用于包含在String 中的字节数据。ChrB 总是返回一个单字节,而不是返回一个字符,一个字符可能是一个或两个字节。ChrW函数返回包含 Unicode 的String,若在不支持 Unicode 的平台上,则其功能与Chr 函数相同。

注意Visual Basic for the Macintosh 不支持Unicode 字符串。因此,当n 值在128 – 65,535 范围内时,ChrW(n) 不能像在Windows环境中那样返回所有的 Unicode 字符。相反地,当Unicode 的n 值大于127 时,ChrW(n) 会试图做一个“最好的猜测”。因此,在Macintosh 环境中,不能使用ChrW。

Chr 函数示例

本示例使用Chr函数来返回指定字符码所代表的字符。

Dim MyChar

MyChar = Chr(65) ' 返回 A。

MyChar = Chr(97) ' 返回 a。

MyChar = Chr(62) ' 返回 >。

MyChar = Chr(37) ' 返回 %。

Command 函数

返回命令行的参数部分,该命令行用于装入 Microsoft Visual Basic 或 Visual Basic 开发的可执行程序。Visual Basic Command函数在 Microsoft Office 应用程序中不可用。

语法

Command

说明

当从命令行装入 Visual Basic 时,/cmd 之后的命令行的任何部分作为命令行的参数传递给程序。下面的示例中,cmdlineargs 代表Command函数返回的参数信息。

VB /cmd cmdlineargs

对于使用 Visual Basic 开发并编译为 .exe 文件的应用程序,Command返回出现在命令行中应用程序名之后的任何参数。例如:

MyApp cmdlineargs

想知道如何在正在使用的应用程序的用户界面中改变命令行参数,请搜寻关于“命令行参数”的帮助。

Command 函数示例

本示例在某个函数中用Command函数获得命令行参数,并将命令行参数以Variant类型之数组返回。在 Microsoft Office中不可用。

Function GetCommandLine(Optional MaxArgs)

'声明变量。

Dim C, CmdLine, CmdLnLen, InArg, I, NumArgs

'检查是否提供了 MaxArgs 参数。

If IsMissing(MaxArgs) Then MaxArgs = 10

' 使数组的大小合适。

ReDim ArgArray(MaxArgs)

NumArgs = 0: InArg = False

'取得命令行参数。

CmdLine = Command()

CmdLnLen = Len(CmdLine)

'以一次一个字符的方式取出命令行参数。

For I = 1 To CmdLnLen

C = Mid(CmdLine, I, 1)

'检测是否为 space 或 tab。

If (C <> " " And C <> vbTab) Then

'若既不是 space 键,也不是 tab 键,

'则检测是否为参数内含之字符。

If Not InArg Then

'新的参数。

'检测参数是否过多。

If NumArgs = MaxArgs Then Exit For

NumArgs = NumArgs + 1

InArg = True

End If

'将字符连接到当前参数中。

ArgArray(NumArgs) = ArgArray(NumArgs) & C

Else

'找到 space 或 tab。

'将 InArg 标志设置成 False。

InArg = False

End If

Next I

'调整数组大小使其刚好符合参数个数。

ReDim Preserve ArgArray(NumArgs)

'将数组返回。

GetCommandLine = ArgArray()

End Function

Cos 函数

返回一个Double,指定一个角的余弦值。

语法

Cos(number)

必要的number参数是一 Double 或任何有效的数值表达式,表示一个以弧度为单位的角。

说明

Cos函数的参数为一个角,并返回直角三角形两边的比值。该比值为角的邻边长度除以斜边长度之商。

结果的取值范围在 -1 到 1 之间。

为了将角度转换成弧度,请将角度乘以 pi/180。为了将弧度转换成角度,请将弧度乘以 180/pi。

Cos 函数示例

本示例使用Cos函数计算一个角的余弦。

Dim MyAngle, MySecant

MyAngle = 1.3 ' 定义角度(以“弧度”为单位)。

MySecant = 1 / Cos(MyAngle) ' 利用余弦计算正割(sec())。CreateObject 函数

创建并返回一个对 ActiveX 对象的引用。

语法

CreateObject(class,[servername])

说明

每个支持自动化的应用程序都至少提供一种对象类型。例如,一个字处理应用程序可能会提供Application对象,Document对象,以及Toolbar对象。

要创建 ActiveX 对象,只需将CreateObject返回的对象赋给一个对象变量:'声明一个对象变量来存放该对象

'的引用。Dim as Object 采用后期绑定方式。

Dim ExcelSheet As Object

Set ExcelSheet = CreateObject("Excel.Sheet")

上述代码将启动该应用程序创建该对象,在本例中就是创建一个 Microsoft Excel 电子数据表。对象创建后,就可以在代码中使用自定义的对象变量来引用该对象。在下面的示例中,可以使用对象变量 ExcelSheet 来访问新建对象的属性和方法,以及访问 Microsoft Excel 的其它对象,包括应用程序对象和单元格集合。

'设置 Application 对象使 Excel 可见

ExcelSheet.Application.Visible = True

'在表格的第一个单元中写些文本

ExcelSheet.Application.Cells(1, 1).Value = "This is column A, row 1" '将该表格保存到C:\test.xls 目录

CreateObject 函数示例

该示例使用CreateObject函数设置一个对 Microsoft Excel 的引用(xlApp)。它使用该引用来访问 Microsoft Excel 的Visible属性,并使用Microsoft Excel 的Quit方法将其关闭,最后再释放该引用。

Dim xlApp As Object '定义存放引用对象的变量。

Set xlApp = CreateObject("excel.application")

'如果要让该应用程序可见,

则需将 Visible 属性设为 True。

xlApp.Visible = True

'可以使用 xlApp 访问 Microsoft Excel 的

'其它对象。

xlApp.Quit '完成时,调用 Quit 方法关闭

Set xlApp = Nothing '该应用程序,然后释放该引用。

CurDir 函数

返回一个Variant (String),用来代表当前的路径。

语法

CurDir[(drive)]

可选的drive参数是一个字符串表达式,它指定一个存在的驱动器。如果没有指定驱动器,或drive是零长度字符串 (""),则CurDir会返回当前驱动器的路径。在 Macintosh上,CurDir忽略任何指定的drive ,并只简单地返回当前驱动器的路径。

CurDir 函数示例

本示例使用CurDir 函数来返回当前的路径在 Macintosh 中,使用CurDir

可以省略驱动器名称。默认驱动器名称是“HD” 并且路径部分由冒号取代反斜线隔开。同样,可以指定 Macintosh 的文件夹代替 \Windows。。

' 假设 C 驱动器的当前路径为“C:\WINDOWS\SYSTEM”(在 Microsoft Windows 中)。

' 假设 D 驱动器的当前路径为“D:\EXCEL”。

' 假设 C 为当前的驱动器。

Dim MyPath

MyPath = CurDir ' 返回“C:\WINDOWS\SYSTEM”。

MyPath = CurDir("C") ' 返回“C:\WINDOWS\SYSTEM”。

MyPath = CurDir("D") ' 返回“D:\EXCEL”。

返回一个Variant (String),用来代表当前的路径。

语法

CurDir[(drive)]

可选的drive参数是一个字符串表达式,它指定一个存在的驱动器。如果没有指定驱动器,或drive是零长度字符串 (""),则CurDir会返回当前驱动器的路径。在 Macintosh上,CurDir忽略任何指定的drive ,并只简单地返回当前驱动器的路径。

CVErr 函数

返回Error 子类型的 Variant,其中包含指定的错误号。

语法

CVErr(errornumber)

必要的errornumber参数可以是任何有效的错误号代码。

说明

可以在过程中,使用CVErr 函数来创建用户自定义错误。例如,如果创建一个函数,它可以接受若干个参数,且正常返回一个字符串,则可以让函数来判断输入的参数,确认它们是在可接受的范围内。如果不是的话,此函数将不会返回所要的字符串。在这种情况下,CVErr 可以返回一个错误号,并告知应该采取的行动。

注意,Error 的隐式转换是不允许的,例如,不能直接把CVErr 的返回值赋值给一个非Variant 的变量。然而,可以对CVErr 的返回值进行显式转换(使用CInt、CDbl等等),并赋值给适当的数据类型变量。

CVErr 函数示例

本示例使用CVErr函数返回一Variant 类型的值,其VarType 为vbError (10)。如果传进去的参数不是一个数字,用户自定义函数 CalculateDouble 将会返回错误信息。可用CVErr返回来自用户自定义过程的自定义错误,或改变处理运行时错误的方式。IsError函数可用来测试返回值是否代表错误状态。' 调用 CalculateDouble,且传入一会产生错误的参数。

Sub Test()

Debug.Print CalculateDouble("345.45robert")

End Sub

' 定义 CalculateDouble 函数过程。

Function CalculateDouble(Number)

If IsNumeric(Number) Then

CalculateDouble = Number * 2 ' 返回结果。

Else

CalculateDouble = CVErr(2001) ' 返回一自定义错误码。

End If

End Function

Date 函数

返回包含系统日期的Variant (Date)。

语法

Date

说明

为了设置系统日期,请使用Date 语句。

Date 函数示例

本示例使用Date函数返回系统当前的日期。

Dim MyDate

MyDate = Date ' MyDate 的值为系统当前的日期。

DateAdd 函数

返回包含一个日期的Variant (Date),这一日期还加上了一段时间间隔。语法

DateAdd(interval, number, date)

设置

Excel VBA实例教程 #055:在工作表中添加艺术字

工作表中的多个图形,如果使用系统缺省名称,如“文本框1”、“文本框2”这样前面是固定的字符串,后面是序号的,可以使用For...Next 语句遍历图形,如下面的代码所示。 1.Sub ErgShapes_1() 2. Dim i As Integer 3. For i = 1 To 4 4. Sheet1.Shapes("文本框 " & i).TextFrame.Characters.Text = "" 5. Next 6.End Sub 代码解析: ErgShapes_1过程清除工作表中四个图形文本框中的文字。 第3行到第5行代码,使用Shapes属性在工作表上的三个图形文本框中循环。 Shapes属性返回Shapes对象,代表工作表或图形工作表上的所有图形,可以使用Shapes (index)返回单个的Shape对象,其中index是图形的名称或索引号。 返回单个的Shape对象后使用TextFrame 属性和Characters方法清除文本框中的字符,关于Shape对象的TextFrame 属性和Characters方法请参阅技巧53 。 如果图形的名称没有规律,可以使用For Each...Next 语句循环遍历所有图形,根据Type 属性返回的图形类型进行相应的操作,如下面的代码所示。 1.Sub ErgShapes_2() 2. Dim myShape As Shape 3. Dim i As Integer 4. i = 1 5. For Each myShape In Sheet1.Shapes 6. If myShape.Type = msoTextBox Then 7. myShape.TextFrame.Characters.Text = "这是第" & i & "个文本框" 8. i = i + 1 9. End If 10. Next 11.End Sub 代码解析: ErgShapes_2过程在工作表中的所有图形文本框中写入文本。 第5行代码使用For Each...Next 语句循环遍历工作表中所有的图形对象。 第6行到第9行代码如果图形对象是文本框则在文本框中写入文本。其中第6行代码根据Type属性判断图形对象是否为文本框,应用于Shape对象的Type属性返回或设置图形类型,MsoShapeType类型,请参阅表格54 1 。 第7行代码根据返回的Type属性值在所有的文本框内写入相应的文本,如图1所示。

Excel_VBA实例教程_查找单元格

Excel VBA实例教程查找单元格 1、使用Find方法 在Excel中使用查找对话框可以查找工作表中特定内容的单元格,而在VBA中则使用Find方法,如下面的代码所示。 01.Sub RngFind() 02. Dim StrFind As String 03. Dim Rng As Range 04. StrFind = InputBox("请输入要查找的值:") 05. If Trim(StrFind) <> "" Then 06. With Sheet1.Range("A:A") 07. Set Rng = .Find(What:=StrFind, _ 08. After:=.Cells(.Cells.Count), _ 09. LookIn:=xlValues, _ 10. LookAt:=xlWhole, _ 11. SearchOrder:=xlByRows, _ 12. SearchDirection:=xlNext, _ 13. MatchCase:=False) 14. If Not Rng Is Nothing Then 15. Application.Goto Rng, True 16. Else 17. MsgBox "没有找到该单元格!" 18. End If 19. End With 20. End If 21.End Sub 代码解析: RngFind过程使用Find方法在工作表Sheet1的A列中查找InputBox函数对话框中所输入的值,并查找该值所在的第一个单元格。 第6到第13行代码在工作表Sheet1的A列中查找InputBox函数对话框中所输入的值。应用于Range 对象的Find方法在区域中查找特定信息,并返回Range对象,该对象代表用于查找信息的第一个单元格。如果未发现匹配单元格,就返回Nothing,语法如下: 01.expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SerchFormat) 复制代码参数expression是必需的,该表达式返回一个Range对象。 参数What是必需的,要搜索的数据,可为字符串或任意数据类型。 参数After是可选的,表示搜索过程将从其之后开始进行的单元格,必须是区域中的单个单元格。查找时是从该单元格之后开始的,直到本方法绕回到指定的单元格时,才对其进行搜索。如果未指定本参数,搜索将从区域的左上角单元格之后开始。 在本例中将After参数设置为A列的最后一个单元格,所以查找时从A1单元格开始搜索。 参数LookIn是可选的,信息类型。 参数LookAt是可选的,可为XlLookAt常量的xlWhole 或xlPart之一。 参数SearchOrder是可选的,可为XlSearchOrder常量的xlByRows或xlByColumns之一。 参数SearchDirection是可选的,搜索的方向,可为XlSearchDirection常量的xlNext或xlPrevious 之一。

excelvba常见字典用法集锦及代码详解(全)

常见字典用法集锦及代码详解 前言 凡是上过学校的人都使用过字典,从新华字典、成语词典,到英汉字典以及各种各样数不胜数的专业字典,字典是上学必备的、经常查阅的工具书。有了它们,我们可以很方便的通过查找某个关键字,进而查到这个关键字的种种解释,非常快捷实用。 凡是上过EH论坛的想学习VBA里面字典用法的,几乎都看过研究过northwolves狼版主、oobird版主的有关字典的精华贴和经典代码。我也是从这里接触到和学习到字典的,在此,对他们表示深深的谢意,同时也对很多把字典用得出神入化的高手们致敬,从他们那里我们也学到了很多,也得到了提高。 字典对象只有4个属性和6个方法,相对其它的对象要简洁得多,而且容易理解使用方便,功能强大,运行速度非常快,效率极高。深受大家的喜爱。 本文希望通过对一些字典应用的典型实例的代码的详细解释来

给初次接触字典和想要进一步了解字典用法的朋友提供一点备查的参考资料,希望大家能喜欢。 给代码注释估计是大家都怕做的,因为往往是出力不讨好的,稍不留神或者自己确实理解得不对,还会贻误他人。所以下面的这些注释如果有不对或者不妥当的地方,请大家跟帖时指正批评,及时改正。 字典的简介 字典(Dictionary)对象是微软Windows脚本语言中的一个很有用的对象。 附带提一下,有名的正则表达式(RegExp)对象和能方便处理驱动器、文件夹和文件的(FileSystemObject)对象也是微软Windows脚本语言中的一份子。 字典对象相当于一种联合数组,它是由具有唯一性的关键字(Key)和它的项(Item)联合组成。就好像一本字典书一样,是

Excel VBA实例教程指南

Excel VBA教程之一:写在前面 VBA功能如何强大,这已勿庸费言,但如何才能很快进阶,写出自己满意的程序,却取决于个人努力和悟性。我下了很大功夫却收效甚微,有时,高手一句点拨却胜读三天书。所以,我把个人学习所得作一点整理,希望有助于后学。 只所以会有看书没用之感,一来是因为市面(我国)上大多数计算机类图书多为粗制滥造之作(这话稍有唐突),二来因为计算机这东西太呆板,不见得新出现的问题就能立即得到某本书籍上的解释,新问题总是层出不穷的。 想把一门编程语言全部搞懂,再去写点程序,是一个十分愚蠢的想法。你想盖房子,难道你想先学会制造砖头、玻璃等?我承认,把语言弄懂再做事情会很顺手,但是,你知道吗,有多少人在弄懂一门晦涩难懂的语言之前就放弃了呢?比如,什么叫面向对象编程?OOP和以前的流线性编程有什么异同?我还是大力提倡学以致用,别指望什么事你都能成专家,计算机世界的“罗氏定理”就是:“毕其一生,不能穷其万一”,你记住了吗? 那么,对于没有编程基础的人,怎样才能进步得快呢?我有几点思考: 1.你一定要带着明确的目的去做一件具体的事。这样,才会在做的过程中发现问题,并逐步去解决这些问题。比如,我想做一个《学生成绩分析系统》,我就会想到怎么才能把学生分数分成不同的班、怎么才能算出总分、平均分、标准差等、怎样比较各班的情况,怎样用图形显示更直观,怎么样才能把某个学生的历次成绩放在一起比较等。 2.你动手去做一做,一点一点地完成你上面的设想,不必因为这个大工程没做出来而忽略你在局部的突破,这样,你会越来越有信心,这就够了,还有什么比有信心做事的感觉更好的了吗? 3.合理及时利用网络资源,这绝对是个好东西,或许你看起来很了不起的问题,在别人看来简直不算什么,一定会有人为你解答。上网并不只是QQ和game啊!同时要好好利用软件的帮助系统,这才是最权威的解释,很多计算机书籍抄自帮助,你想,微软的专家写的,绝对原创,他还能去抄谁? 4.做了一些工作之后,再回过头来看书,就会感觉很亲切,觉得写书的人原来也不是一无是处,也是很辛苦的(不要过分自我批评了)。不过,要看书,计算机类的,我百分之一万地推荐你看外国人写的,首先,软件是人家编的,当然更了解。其次,外国人写的,又被介绍到中国来,也是比较优秀的了。三来,我确实作过对比,看老外的书收益最大。语言不通的问题怎么办?金山词霸一下呗。 我为什么要写这个东西?一是因为我想帮助别人,二是因为我想因此促进自己,三是因为我反感某些号称程序员的家伙,似乎编程是一件多么了不起的事,用一些极端人士的话来说:“编程有什么了不起?不就是判断和循环吗”,说得很有道理,从本质上说,计算机就是在做判断和循环,不信你就跟着我来吧。 好了,Let’s go Excel VBA教程之二:从一个界面设计开始 一个好的软件,除了运算速度快、体积小后,更重要的是,它的用户界面是不是很友好、亲切,“友好、亲切”这样的词汇在开始接触计算机语言时,感觉很好笑,但现在不一样了,我感觉这两个词最贴切!界面友好,就是引导用户能很快找到他需要的服务,最能想到他的心思,最体贴他,让他不时地心动,不时地赞叹!界面友好,就是能让用户在不经意间学到好多知识,无形中丰富了他自己,让他有美的享受!界面友好,还在于一目了然的界面却能让他需要的功能呼之即来,挥之即去!如此等等。 那么,我想做一个《学生成绩分析系统》,我该怎么做呢? 以下的界面你满意吗?

excelVBA常用函数

(1) Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示 Option Compare Text '字符串不区分大小写 Option Base 1 '指定数组的第一个下标为1 (2) On Error Resume Next '忽略错误继续执行VBA代码,避免出现错误消息 (3) On Error GoTo ErrorHandler '当错误发生时跳转到过程中的某个位置 (4) On Error GoTo 0 '恢复正常的错误提示 (5) Application.DisplayAlerts=False '在程序执行过程中使出现的警告框不显示 (6) Application.ScreenUpdating=False '关闭屏幕刷新 Application.ScreenUpdating=True '打开屏幕刷新 (7) Application.Enable.CancelKey=xlDisabled '禁用Ctrl+Break中止宏运行的功能 工作簿 (8) Workbooks.Add() '创建一个新的工作簿 (9) Workbooks(“book1.xls”).Activate '激活名为book1的工作簿 (10) ThisWorkbook.Save '保存工作簿 (11) ThisWorkbook.close '关闭当前工作簿 (12) ActiveWorkbook.Sheets.Count '获取活动工作薄中工作表数 (13) https://www.sodocs.net/doc/9d15132249.html, '返回活动工作薄的名称

Excel VBA实例教程 #060:使用VBA自动生成图表

在实际工作中我们常用图表来表现数据间的某种相对关系,一般采用手工插入的方式,而使用VBA代码可以在工作表中自动生成图表,如下面的示例代码。 1.Sub ChartAdd() 2. Dim myRange As Range 3. Dim myChart As ChartObject 4. Dim R As Integer 5. With Sheet1 6. .ChartObjects.Delete 7. R = .Range("A65536").End(xlUp).Row 8. Set myRange = .Range("A" & 1 & ":B" & R) 9. Set myChart = .ChartObjects.Add(120, 40, 400, 250) 10. With myChart.Chart 11. .ChartType = xlColumnClustered 12. .SetSourceData Source:=myRange, PlotBy:=xlColumns 13. .ApplyDataLabels ShowValue:=True 14. .HasTitle = True 15. .ChartTitle.Text = "图表制作示例" 16. With .ChartTitle.Font 17. .Size = 20 18. .ColorIndex = 3 19. .Name = "华文新魏" 20. End With 21. With .ChartArea.Interior 22. .ColorIndex = 8 23. .PatternColorIndex = 1 24. .Pattern = xlSolid 25. End With 26. With .PlotArea.Interior 27. .ColorIndex = 35 28. .PatternColorIndex = 1

EXCEL VBA 编程常用时间函数

时间函数 Now 返回一个Variant (Date),根据计算机系统设置的日期和时间来指定日期和时间。Date 返回包含系统日期的Variant (Date)。 Time 返回一个指明当前系统时间的Variant (Date)。 Timer 返回一个Single,代表从午夜开始到现在经过的秒数。 TimeSerial(hour, minute, second) 返回一个Variant (Date),包含具有具体时、分、秒的时间。DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]) 返回Variant (Long) 的值,表示两个指定日期间的时间间隔数目 Second(time) 返回一个Variant (Integer),其值为0 到59 之间的整数,表示一分钟之中的某个秒 Minute(time) 返回一个Variant (Integer),其值为0 到59 之间的整数,表示一小时中的某分钟 Hour(time) 返回一个Variant (Integer),其值为0 到23 之间的整数,表示一天之中的某一钟点 Day(date) 返回一个Variant (Integer),其值为1 到31 之间的整数,表示一个月中的某一日 Month(date) 返回一个Variant (Integer),其值为1 到12 之间的整数,表示一年中的某月Year(date) 返回Variant (Integer),包含表示年份的整数。 Weekday(date, [firstdayofweek]) 返回一个Variant (Integer),包含一个整数,代表某个日期是星期几

EXCEL宏编程简明教程(有实例),

Excel宏编程简明教程 一)、宏学习 首先需要明确的是,本文不可能教会您关于宏的所有内容。您需要学会利用"录制宏"的方法来学习宏: 点击Excel"工具"下拉菜单中"宏"下?quot;录制新宏",此后可象平时一样进行有关操作,待完成后停止录制。然后再点击"工具"下拉菜单中"宏"下"宏"的"编辑"选项即可打开刚才所录制的宏的Visual Basic源程序,并且可以在此时的"帮助"下拉菜单中获得有关的编程帮助。对录制宏进行修改不仅可以学习宏的使用,还能大大简化宏的编写。 二)、基本概念 为了学习Excel中的宏,我们需要先了解以下一些基本概念。 1、工作簿: Workbooks、Workbook、ActiveWorkbook、ThisWorkbooks集合包含Excel中所有当前打开的Excel工作簿,亦即所有打开的Excel文件;Workbook对应Workbooks中的成员,即其中的Excel文件;ActiveWorkbook代表当前处于活动状态的工作簿,即当前显示的Excel文件;ThisWorkbook代表其中有Visual Basic 代码正在运行的工作簿。 在具体使用中可用Workbooks(index)来引用Workbook对象,其中index为工作簿名称或编号;如Workbooks (1)、Workbooks("年度报表.xls")。而编号按照创建或打开工作簿的顺序来确定,第一个打开的工作簿编号为1,第二个打开的工作簿为2……。 2、工作表: Worksheets、Worksheet、ActiveSheet

Worksheets集合包含工作簿中所有的工作表,即一个Excel文件中的所有数据表页;而Worksheet则代表其中的一个工作表;ActiveSheet代表当前处于的活动状态工作表,即当前显示的一个工作表。 可用Worksheets(index)来引用Worksheet对象,其中index为工作表名称或索引号;如Worksheets (1)、Worksheets("第一季度数据")。工作表索引号表明该工作表在工作表标签中的位置: 第一个(最左边的)工作表的索引号为1,最后一个(最右边的)为Worksheets.Count。需要注意的是: 在使用过程中Excel会自动重排工作表索引号,保持按照其在工作表标签中的从左至右排列,工作表的索引号递增。因此,由于可能进行的工作表添加或删除,工作表索引号不一定始终保持不变。 3、图表: Chart、Charts、ChartObject、ChartObjects、ActiveChart代表工作簿中的图表。该图表既可为嵌入式图表(包含在ChartObject中),也可为一个分开的(单独的)图表工作表。 Charts代表指定工作簿或活动工作簿中所有图表工作表的集合,但不包括嵌入式在工作表或对话框编辑表中的图表。使用Charts(index)可引用单个Chart 图表,其中index是该图表工作表的索引号或名称;如Charts (1)、Charts("销售图表")。图表工作表的索引号表示图表工作表在工作簿的工作表标签栏上的位置。Charts (1)是工作簿中第一个(最左边的)图表工作表; Charts(Charts.Count)为最后一个(最右边的)图表工作表。 ChartObject代表工作表中的嵌入式图表,其作用是作为Chart对象的容器。利用ChartObject可以控制工作表上嵌入式图表的外观和尺寸。

Excel中的VBA内部函数有哪些

Excel中的VBA内部函数有哪些 一.测试函数 IsNumeric(x)‘是否为数字,返回Boolean结果,TrueorFalse IsDate(x)‘是否是日期,返回Boolean结果,TrueorFalse IsEmpty(x)‘是否为Empty,返回Boolean结果,TrueorFalse IsArray(x)‘指出变量是否为一个数组。 IsError(expression)‘指出表达式是否为一个错误值 IsNull(expression)‘指出表达式是否不包含任何有效数据(Null)。 IsObject(identifier)‘指出标识符是否表示对象变量 二.数学函数 Sin(X)、Cos(X)、Tan(X)、Atan(x)三角函数,单位为弧度 Log(x)返回x的自然对数 Exp(x)返回ex Abs(x)返回绝对值 Int(number)、Fix(number)都返回参数的整数部分,区别:Int 将-8.4转换成-9,而Fix将-8.4转换成-8 Sgn(number)返回一个Variant(Integer),指出参数的正负号 Sqr(number)返回一个Double,指定参数的平方根 VarType(varname)返回一个Integer,指出变量的子类型 Rnd(x)返回0-1之间的单精度数据,x为随机种子 三.字符串函数

Trim(string)去掉string左右两端空白 Ltrim(string)去掉string左端空白 Rtrim(string)去掉string右端空白 Len(string)计算string长度 Left(string,x)取string左段x个字符组成的字符串 Right(string,x)取string右段x个字符组成的字符串 Mid(string,start,x)取string从start位开始的x个字符组成的字符串 Ucase(string)转换为大写 Lcase(string)转换为小写 Space(x)返回x个空白的字符串 Asc(string)返回一个integer,代表字符串中首字母的字符代码 Chr(charcode)返回string,其中包含有与指定的字符代码相关的字符 四.转换函数 CBool(expression)转换为Boolean型 CByte(expression)转换为Byte型 CCur(expression)转换为Currency型 CDate(expression)转换为Date型 CDbl(expression)转换为Double型 CDec(expression)转换为Decemal型 CInt(expression)转换为Integer型

Excel VBA实例教程 #022:选择工作表的方法

在VBA中需要激活或者选择某个工作表时使用Select方法或Activate方法,如下面的代码所示。 1.Sub SelectSh() 2. Worksheets("Sheet2").Select 3.End Sub 4.Sub ActivateSh() 5. Worksheets("Sheet2").Activate 6.End Sub 代码解析: SelectSh过程使用Select方法选择“Sheet2”工作表,而ActivateSh过程则使用Activate 方法选择“Sheet2”工作表,从表面看两者的作用是相同的,但是如果“Sheet2”工作表是隐藏的,Activate方法可以正常运行,而Select方法将会出现错误,如图1所示。 图 1 Select方法无效提示 如果需要同时选中工作簿中的所有工作表,则只能使用Select方法而不能使用Activate 方法,如下面的代码所示。 1.Sub SelectShs() 2. Dim Shs As Worksheet 3. For Each Shs In Worksheets 4. Shs.Select False 5. Next 6.End Sub 7.Sub SelectSheets() 8. Worksheets.Select 9.End Sub 10.Sub ArraySheets() 11. Worksheets(Array(1, 2, 3)).Select

12.End Sub 代码解析: SelectShs过程遍历工作表并使用带参数的Select方法选中所有工作表。应用于Worksheet对象的Select方法的语法如下: Select(Replace) 参数Replace是可选的。如果该值为True,则用指定对象替代当前选定对象。如果该值为False,则延伸当前选定对象以包括任何以前选定的对象。 SelectSheets过程使用Worksheets集合的Select方法选中集合中所有的对象。 ArraySheets过程使用Array 函数返回工作簿中的前三张工作表并使用Worksheets集合的Select方法选中前三张工作表。

在Excel VBA中调用Excel自带函数

在Excel VBA中调用Excel自带函数-Excel VBA学习 2010-03-29 19:45:25| 分类: computer|字号订阅 最近在写一个VBA的程序,想自己生成一些报表.便遇到了在VBA中无法使用SUM函数.解决的方法如下: 前段时间为公司实验室编制测试数据库,其中遇到一个问题,怎样在VBA中使用Excel自带的一些函数呢?如min,max,average等等。 本以为能在Excel表格中直接使用的函数也能直接移植到VBA中,结果发现根本行不通,程序报错。后来通过多方查询发现,虽然不能直接引用,但是我们可以曲线救国,excel中表格可以用max函数,在VBA中也可以用,只需通过WorksheetFunction对象就可以引用,后面加函数名称,然后加range来引用单元格。举个例子: Application.WorksheetFunction.Max(range("A1:C5")) 下面就是能在VBA中使用excel自带函数: A__ Acos Acosh And Asin Asinh Atan2 Atanh AveDev Average B__ BetaDist BetaInv BinomDist C__ Ceiling ChiDist ChiInv ChiTest Choose Clean Combin Confidence Correl Cosh Count CountA CountBlank CountIf

Covar CritBinom D__ DAverage Days360 Db DCount DCountA Ddb Degrees DevSq DGet DMax DMin Dollar DProduct DStDev DStDevP DSum DVar DVarP E__ Even ExponDist F__ Fact FDist Find FindB FInv Fisher FisherInv Fixed Floor Forecast Frequency FTest Fv G__ GammaDist

excel2010 vba笔记 (实战教程)(基础实例)

VBA笔记 8-21 1.VBA是什么: 微软开发出来的应用程序一种能共享通用的自动化语言,VBA能使已有的应用程序(excel等)自动化,可以创建自定义的解决方案.等同:可以用excel的宏语言来使excel自动化,使用word BASIC使word自动化,等等。VBA可以称作excel的“遥控器”.此外,如果你愿意,还可以将excel用做开发平台实现应用程序. 2.VBA可以实现的功能 1. 使重复的任务自动化. 2. 自定义excel工具栏,菜单和界面. 3. 简化模板的使用. 4. 自定义excel,使其成为开发平台. 5. 创建报表. 6. 对数据进行复杂的操作和分析. 3.宏 3.1录制简单的宏 选择“工具”—“宏”—“录制新宏”—输入宏名—确定—开始录制(状态栏中显示“录制”)—结束宏录制(“工具”—“宏”—“停止录制”。)*开始录制并非一个按钮,而是你的一系列操作,宏会记录下来变为自己的操作。 3.2执行宏 选择任何一个单元格—选择“工具”—“宏”—“宏”(出现“宏”对话框)—选择相应的宏名—“执行”。 3.3查看录制的代码 工具”—“宏”—“宏”(显示“宏”对话框)—选择某个宏—“编辑” VBA的编辑器窗口(VBE) Sub 改变颜色() //宏名 ’ ’改变颜色Macro ’xw 记录的宏2000-6-10 ’ ’//以上五行录制时自动生成 Range("A5").Select //表示无论选择哪个单元格,最后都只作用于A5 With Selection.Interior//设置属性在选择区域的内部(开始录制属性) .ColorIndex = 3 //颜色为3号色:红色 .Pattern = xlSolid //区域内部图案=纯色(录制时自动生成,可删) PatternColorIndex = xlAutomatic //内部图案底纹颜色=自动(自动生成,可删) End With //结束属性录制 End Sub//结束宏录制 一个名为练习的宏: Sub 练习() ' ' 练习宏 ' ' With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0

Excel VBA基础教程两篇

Excel VBA基础教程两篇 篇一:Excel VBA基础教程 Excel VBA教程是把VB编程应用在Excel平台的一套实用教程,Excel +VBA双剑合壁,他可以帮助我们实现Excel原本实现不了的功能,可以让工作变得更高效,可以让操作变得变方便,可以把重复性的操作变得更有趣,随心所欲的定制自己的工作平台,还可以针对企业来开发各种系统如,人事管理系统、仓库系统、进存销系统等,对于经常要处理大量数据工作的朋友,学会了这套VBA教程你的工作将游刃有余。 标题 Excel VBA基础教程 Excel VBA基础教程 第一章:Excel VBA基础知识 1-1、Excel VBA教程简介 1-2、宏在工作中的运用

1-3、Excel VBA基础 1-4、Excel VBA窗口介绍 1-5、Excel VBA代码编写规则1-6、对象 1-7、属性 1-8、方法 1-9、常量与变量 1-10、数据类型 1-11、判断语句之IF 1-12、判断语句IF之多条件1-12B、If条件判断小结

1-13、判断语句之SELECT 1-14、循环语句之DO...LOOP 1-15、循环语句之DO...LOOP实例 1-16、循环语句之DO WHILE...LOOP 1-17、循环语句之DO UNTIL...LOOP 1-18、循环语句之WHILE与UNTIL位置变化1-18B、DO...LOOP 语法小结 1-19、.循环语句之FOR EACH...NEXT 1-20、循环语句之FOX...NEXT 1-20B、For...NEXT小结与实例 1-21、用语句FOR...NEXT制作九九乘法表

vba常用代码大全

前言 我们平时在工作表单元格的公式中常常使用函数,Excel自带的常用的函数多达300多个,功能强大,丰富多彩,但是在VBA中不能直接应用,必须在函数名前面加上对象,比如:Application.WorksheetFunction.Sum(arg1,arg2,arg3)。 而能在VBA中直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA函数,以供大家学习参考。 第1.1例 ASC函数 一、题目: 要求编写一段代码,运行后得到字符串”Excel”的首字母和”e”的ASCII值。 二、代码: Sub 示例_1_01() Dim myNum1%, myNum2% myNum1 = Asc("Excel") '返回69 myNum2 = Asc("e") '返回101 [a1] = "myNum1= ": [b1] = myNum1 [a2] = "myNum2= ": [b2] = myNum2 End Sub 三、代码详解 1、Sub 示例_1_01():宏程序的开始语句。 2、Dim myNum1%, myNum2%:变量myNum1和myNum2声明为整型变量。 也可以写为 Dim myNum1 As Integer 。Integer 变量存储为 16位(2 个字节)的数值形式,其范围为 -32,768 到 32,767 之间。Integer 的类型声明字符是百分比符 号 (%)。

3、myNum1 = Asc("Excel"):把Asc函数的值赋给变量myNum1。 Asc函数返回一个 Integer,代表字符串中首字母的字符的ASCII代码。 语法 Asc(string) 必要的 string(字符串)参数可以是任何有效的字符串表达式。如果 string 中没有包含任何字符,则会产生运行时错误。 4、myNum2 = Asc("e"):把Asc函数的值赋给变量myNum2。这里返回小写字母e 的ASCII代码101。 5、[a1] = "myNum1= ": [b1] = myNum1:把字符串“myNum1= “赋给A1单元格,把变量myNum1的值赋给B1单元格。 6、[a2] = "myNum2= ": [b2] = myNum2:把字符串“myNum2= “赋给A2单元格,把变量myNum2的值赋给B2单元格。 7、End Sub:程序的结束语句,和“Sub示例_1_01()”相对应。 第1.2例 Chr函数 一、题目"": 要求编写一段代码,运用Chr函数将ASCII值转换为对应的字符。 二、代码: Sub 示例_1_02() Dim myChar1$, myChar2$ myChar1 = Chr(69) ' 返回 E。 myChar2 = Chr(101) ' 返回 e。 [a1] = "myChar1= ": [b1] = myChar1 [a2] = "myChar2= ": [b2] = myChar2

Excel VBA实例教程 #036:复制自动筛选后的数据区域

用户在对如图1所示的数据列表进行自动筛选后,往往希望将自动筛选的结果复制到其它地方。 图1 筛选结果 这时可以通过获取该列表区域中可见单元格的方法得到筛选结果的单元格区域,并复制到工作表Sheet2中,如下面的代码所示。 1.Sub CopyFilter() 2. Sheet2.Cells.Clear 3. With Sheet1

4. If .FilterMode Then 5. .AutoFilter.Range.SpecialCells(12).Copy Sheet2.Cells(1, 1) 6. End If 7. End With 8.End Sub 代码解析: CopyFilter过程将Sheet1表中的筛选结果复制到工作表Sheet2中。 第2行代码清除Sheet2表中数据。 第4行代码判断Sheet1表是否处于自动筛选状态。FilterMode属性返回工作表是否处于筛选模式,如果指定工作表中包含已筛选序列且该序列中含有隐藏行,则该值为True。 第5行代码通过AutoFilter对象的Range属性返回工作表的自动筛选列表区域,再使用SpecialCells方法获取该列表区域中可见单元格(SpecialCells 方法请参阅技巧4 ),得到筛选结果的单元格区域,然后使用Copy方法将结果区域复制到工作表Sheet2中,应用于Range对象的Copy方法将单元格区域复制到指定的区域或剪贴板中,语法如下: expression.Copy(Destination) 参数expression是必需的,该表达式返回一个Range对象。 参数Destination是可选的,指定区域要复制到的目标区域。如果省略该参数,则将该区域复制到剪贴板中。 运行CopyFilter过程工作表Sheet2如图2所示。

Excel_VBA编程常用实例(150例)

Excel_VBA编程常用实例(150例) 主要内容和特点 《ExcelVBA编程入门范例》主要是以一些基础而简短的VBA实例来对ExcelV BA中的常用对象及其属性和方法进行讲解,包括应用程序对象、窗口、工作簿、工作表、单元格和单元格区域、图表、数据透视表、形状、控件、菜单和工具栏、帮助助手、格式化操作、文件操作、以及常用方法和函数及技巧等方面的应用示例。这些例子都比较基础,很容易理解,因而,很容易调试并得以实现,让您通过具体的实例来熟悉ExcelVBA编程。 ■ 分16章共14个专题,以具体实例来对大多数常用的ExcelVBA对象进行讲解; ■ 一般而言,每个实例都很简短,用来说明使用VBA实现Excel某一功能的操作; ■ 各章内容主要是实例,即VBA代码,配以简短的说明,有些例子可能配以必要的图片,以便于理解; ■ 您可以对这些实例进行扩充或组合,以实现您想要的功能或更复杂的操作。VBE编辑器及VBA代码输入和调试的基本知识 在学习这些实例的过程中,最好自已动手将它们输入到VBE编辑器中调试运行,来查看它们的结果。当然,您可以偷赖,将它们复制/粘贴到代码编辑窗口后,进行调试运行。下面,对VBE编辑器界面进行介绍,并对VBA代码输入和调试的基本知识进行简单的讲解。 激活VBE编辑器 一般可以使用以下三种方式来打开VBE编辑器: ■ 使用工作表菜单“工具——宏——Visual Basic编辑器”命令,如图00-01所示;■ 在Visual Basic工具栏上,按“Visual Basic编辑器”按钮,如图00-02所示;■ 按Alt+F11组合键。

图00-01:选择菜单“工具——宏——Visual Basic编辑器”命令来打开VBE编辑器 图00-02:选择Visual Basic工具栏上的“Visual Basic编辑器”命令按钮来打开VBE编辑器 此外,您也可以使用下面三种方式打开VBE编辑器: ■ 在任一工作表标签上单击鼠标右键,在弹出的菜单中选择“查看代码”,则可进入VBE编辑器访问该工作表的代码模块,如图00-03所示; ■ 在工作簿窗口左上角的Excel图标上单击鼠标右键,在弹出的菜单中选择“查看代码”,则可进入VBE编辑器访问活动工作簿的ThisWorkbook代码模块,如图00-04所示; ■ 选择菜单“工具——宏——宏”命令打开宏对话框,若该工作簿中有宏程序,则单击该对话框中的“编辑”按钮即可进行VBE编辑器代码模块,如图00-05所示。

Excel中最常用的300句VBA编程语句

最近研究了一下vba编程,主要是针对excel的,现在为了学习,特别从网上搜集了300句常用语句,以备不时之需,也留给网友,不方便的时候查询一下。 定制模块行为 (1) Option Explicit ‘强制对模块内所有变量进行声明 Option Private Module ‘标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示 Option Compare Text ‘字符串不区分大小写 Option Base 1 ‘指定数组的第一个下标为1 (2) On Error Resume Next ‘忽略错误继续执行VBA代码,避免出现错误消息 (3) On Error GoTo ErrorHandler ‘当错误发生时跳转到过程中的某个位置 (4) On Error GoTo 0 ‘恢复正常的错误提示 (5) Application.DisplayAlerts=False ‘在程序执行过程中使出现的警告框不显示 (6) Application.ScreenUpdating=False ‘关闭屏幕刷新 Application.ScreenUpdating=True ‘打开屏幕刷新 (7) Appli cation.Enable.CancelKey=xlDisabled ‘禁用Ctrl+Break中止宏运行的功能 工作簿 (8) Workbooks.Add() ‘创建一个新的工作簿 (9) Workbooks(“book1.xls”).Activate ‘激活名为book1的工作簿 (10) ThisWorkbook.Save ‘保存工作簿 (11) ThisWorkbook.close ‘关闭当前工作簿 (12) ActiveWorkbook.Sheets.Count ‘获取活动工作薄中工作表数 (13) https://www.sodocs.net/doc/9d15132249.html, ‘返回活动工作薄的名称 (14) https://www.sodocs.net/doc/9d15132249.html, ‘返回当前工作簿名称 ThisWorkbook.FullName ‘返回当前工作簿路径和名称 (15) ActiveWindow.EnableResize=False ‘禁止调整活动工作簿的大小 (16) Application.Window.Arrange xlArrangeStyleTiled ‘将工作簿以平铺方式排列 (17) ActiveWorkbook.WindowState=xlM aximized ‘将当前工作簿最大化 工作表 (18) https://www.sodocs.net/doc/9d15132249.html,edRange.Rows.Count ‘当前工作表中已使用的行数 (19) Rows.Count ‘获取工作表的行数(注:考虑向前兼容性) (20) Sheets(Sheet1).Name= “Sum” ‘将Sheet1命名为Sum (21) ThisWorkbook.Sheets.Add Before:=Worksheets(1) ‘添加一个新工作表在第一工作表前 (22) ActiveSheet.Move After:=ActiveWorkbook. _ Sheets(ActiveWorkbook.Sheets.Count) ‘将当前工作表移至工作表的最后(23) Worksheets(Array(“sheet1”,”sheet2”)).Select ‘同时选择工作表1和工作表2 (24) Sheets(“sheet1”).Delete或Sheets(1).Delete ‘删除工作表1 (25) ActiveWorkbook.Sheets(i).Name ‘获取工作表i的名称 (26) ActiveWindow.DisplayGridlines=Not ActiveWindow.DisplayGridlines

Excel VBA实例教程 #021:引用工作表的方式

VBA中,在不同的工作表之间转换或者对不同工作表中的单元格区域进行操作时,需要指定引用的工作表,通常有下面几种方法: 1、使用工作表的名称 工作表名称是指显示在工作表标签中的文本,工作表名称可以使用WorkSheets集合和Sheets集合两种引用方式,如下面的代码所示。 1.Sub ShActivate() 2. Worksheets("索引号").Activate 3. 'Sheets("索引号").Activate 4.End Sub 第3、4行代码都激活工作簿中名称为“索引号”的工作表,激活后“索引号”工作表将成为活动工作表。 WorkSheets集合包含所有的工作表,而Sheets集合不仅包含工作表集合WorkSheets,还包含图表集合Charts、宏表集合Excel4MacroSheets与MS Excel 5.0对话框集合DialogSheets等。 任何时刻工作簿中只有一个工作表是活动工作表。 2、使用工作表的索引号 工作表索引号是指工作表在工作簿中的位置,Excel根据工作表在工作表标签中的位置以1开始从左向右进行编号。下面的代码选中并激活当前工作簿中第1个工作表: 1.Sub ShIndex() 2. Worksheets(1).Select 3.End Sub 单个WorkSheet对象的Select方法与Activate方法的主要区别在于Select方法要求工作表可视。 注意当工作簿包括工作表、宏表、图表等时,使用索引号引用工作表如Sheets(1)与WorkSheets(1)引用的可能不是同一个表。 使用Worksheet对象的Index属性可以返回工作表的索引号,如下面的代码所示。 1.Sub ShInde() 2. MsgBox Worksheets("索引号").Index 3.End Sub 3、使用工作表的代码名称 使用Worksheet对象的CodeName属性可以返回工作表的代码名称,如下面的代码所示。

相关主题