Excel VBA常用技巧 第09章 函数的使用(6)

2019-03-03 16:55

VBA常用技巧代码解析

使用自定义函数取得应用程序的安装路径,如下面的代码所示。

#001 Function GetSetupPath(AppName As String) #002 Dim WSH As Object

#003 Set WSH = CreateObject(\

#004 GetSetupPath = WSH.RegRead(\#005 & \#006 & AppName & \#007 Set WSH = Nothing #008 End Function #009 Sub WinRARPath()

#010 MsgBox GetSetupPath(\#011 End Sub

代码解析:

自定义GetSetupPath函数取得应用程序的安装路径,其中参数AppName代表指定的应用程序的名称。

第3行代码使用CreateObject函数将Wscript.Shell对象的引用赋给变量WSH。 CreateObject函数创建并返回一个对ActiveX 对象的引用,语法如下:

CreateObject(class,[servername])

参数class是必需的,Variant (String),要创建的应用程序名称和类。

参数servername是可选的,Variant (String),要在其上创建对象的网络服务器名称。如果servername是一个空字符串(\,即使用本地机器。

第4行代码取得AppName参数指定的应用程序在注册表中的路径。

WinRARPath过程使用消息框显示由自定义的GetSetupPath函数取得的应用程序“WinRAR”的安装路径。

运行WinRARPath过程结果如图 16-1所示。

图 16-1 应用程序安装路径

26

VBA常用技巧代码解析

技巧17 数组的使用

17-1

代码运行时创建数组

使用Array函数可以在代码运行时创建数组并把一系列数据保存在数组中,示例代码如下:

#001 Option Base 1 #002 Sub arr()

#003 Dim arr As Variant #004 Dim i As Integer

#005 arr = Array(\王晓明\吴胜玉\周志国\曹武伟\张新发\卓雪梅\\沈煜婷\丁林平\

#006 For i = LBound(arr) To UBound(arr) #007 Cells(i, 1) = arr(i) #008 Next #009 End Sub

代码解析:

Arr过程使用Array函数创建一个数组用来保存数据并将其写入到工作表的单元格区域。

第1行代码使用Option Base语句声明数组下标的缺省下界为1,数组下标的缺省下界默认为0。

第5行代码使用Array函数创建数组用来保存数据。Array函数返回一个包含数组的Variant,语法如下:

Array(arglist)

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

第6行代码使用LBound函数和UBound函数取得数组的最小和最大下标。

LBound函数返回一个Long型数据,其值为指定数组维可用的最小下标,语法如下:

LBound(arrayname[, dimension])

UBound函数返回一个Long型数据,其值为指定数组维可用的最大下标,语法如下:

UBound(arrayname[, dimension])

参数arrayname是必需的,数组变量的名称。

参数dimension是可选的,指定返回哪一维的下界,1表示第一维,2表示第二维,如

27

VBA常用技巧代码解析

此类推。默认为1。

UBound函数与LBound函数一起使用,可以用来确定数组的大小。

第7行代码确定数组的大小后使用For...Next语句遍历数组元素并将数组元素依次写入到工作表的A列单元格中,如图 17-1所示。

图 17-1 将数组元素写入工作表

17-2 文本转换为数组

在处理字符串时可以使用Split 函数将字符串按指定的分隔符分开并以数组返回,代码如下:

#001 Sub Splitarr()

#002 Dim Arr As Variant

#003 Arr = Split(Sheet2.Cells(1, 1), \

#004 Sheet1.Cells(1, 1).Resize(UBound(Arr) + 1, 1) = Application.Transpose(Arr)

#005 End Sub

代码解析:

Splitarr过程使用Split 函数将工作表Sheet2中A1单元格的姓名分别写入到工作表Sheet1中的A列单元格。

Split 函数返回一个下标从零开始的一维数组,包含指定数目的子字符串,语法如下:

Split(expression[, delimiter[, limit[, compare]]])

参数expression是必需的,包含子字符串和分隔符的字符串表达式。

参数delimiter是必需的,用来标识子字符串边界的字符串字符。如果忽略,则使用空格字符(\作为分隔符。

第4行代码,首先使用UBound函数取得返回数组的最大下标后调整单元格区域,因为数组下标的缺省下界默认为0,所以在使用Resize属性调整单元格区域时参数RowSize

28

VBA常用技巧代码解析

需要在返回数组的最大下标上加一。

然后使用工作表Transpose函数将返回数组转置后写入到工作表调整后的单元格区域中。

工作表Transpose函数返回转置单元格区域,即将一行单元格区域转置成一列单元格区域,反之亦然,语法如下:

TRANSPOSE(array)

参数array为需要进行转置的数组或工作表中的单元格区域。

Splitarr过程将如图 17-2所示的工作表单元格中的字符串以逗号分隔后依次写入到工作表的A列单元格中,如图 17-3所示。

图 17-2 工作表单元格中的字符串

29

VBA常用技巧代码解析

图 17-3 文本转换为数组写入单元格

17-3 使用动态数组去除重复值

在技巧17-2中使用数组函数将单元格中的文本进行分隔后写入到工作表Sheet1中的A列单元格,但是如果文本中含有大量的重复值,在写入时也会将重复值写入到工作表中,此时可以使用动态数组去除文本中的重复值,如下面的代码所示。

#001 Sub Splitarr()

#002 Dim Splarr() As String #003 Dim Arr() As String #004 Dim Temp() As String #005 Dim r As Integer

30


Excel VBA常用技巧 第09章 函数的使用(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:股东会议事规则

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: