Excel中VBA编程学习笔记(五)

28、程序运行时间统计

Sub test()

begin_time = Timer

For i = 1 To 1000

For j = 1 To 10000

x = x + 1 * 2

Next

Next

end_time = Timer

MsgBox "运行用时" & Format(end_time - begin_time, "0.00")

End Sub

29、split函数及join函数

split函数用于分割字符串并返回一个下标从0开始的数组,它包含指定的自字符串数目

Dim direc

Set direc = CreateObject("Scripting.Dictionary")

contents = Split(Content, ",")    '分割符为逗号

For k = LBound(contents) To UBound(contents)

direc(contents(k)) = direc(contents(k)) + 1

Next

Key = direc.Keys

Value = direc.items

[B1].Resize(direc.Count, 1) = Application.Transpose(Key)

[C1].Resize(direc.Count, 1) = Application.Transpose(Value)

jion函数返回一个字符串,该字符串通过连接某个一维数组的多个自字符串而创建的

arr = [{"武汉","广州","深圳"}]

res = Join(arr, ";") '得到武汉;广州;深圳

30、filter函数

filter函数返回一个下标从零开始的数组,该数组包含基于指定筛选条件的一个字符串数组的子集。语法如下:

Filter(sourcesrray, match[, include[, compare]])

Filter函数语法有如下的命名参数:

部分

描述

sourcearray

必需的。要执行搜索的一维字符串数组。

match

必需的。要搜索的字符串。

include

可选的。Boolean值,表示返回子串包含还是不包含match字符串。如果includeTrueFilter返回的是包含match子字符串的数组子集。如果includeFalseFilter返回的是不包含match子字符串的数组子集。

compare

可选的。数字值,表示所使用的字符串比较类型。有关其设置,请参阅下面的“设置值”部分。

设置值

Compare参数的设置值如下:

常数

描述

vbUseCompareOption

–1

使用Option Compare语句的设置值来执行比较。

vbBinaryCompare

0

执行二进制比较。

vbTextCompare

1

执行文字比较。

vbDatabaseCompare

2

只用于Microsoft Access。基于您的数据库信息来执行比较。

arr = [{"abc","bb","bp","c","eda","tubdu"}]

res1 = Filter(arr, "b", True) '{"abc","bb","bp","tubdu"}

res2 = Filter(arr, "b", False) '{"c","eda"}

31、自动关闭的消息框

语法:

wshell.Popup(StrText,[natsecondsToWait],[strTitle],[natType]=inButton)

参数说明:

StrText为提示文本,natsecondsToWait为等待时间,natType为按钮类型。

【例】

Sub test()

Dim wshell As Object

Set wshell = CreateObject("Wscript.Shell")

wshell.popup "执行完毕!", 1, "提示", 64    '1s后自动关闭

Set wshell = Nothing

End Sub

32、使用inputBox限制输入内容

语法:

expression.InputBox(Prompt,Title,Default,Left,Top,HelpFile,HelpContextId,Type)

参数说明:

参数

说明

Prompt

消息框提示字符串(必须参数)

Title

输入框标题

Default

输入文本框缺省内容

Left

相对于屏幕左上角的x坐标

Top

相对于屏幕左上角的y坐标

HelpFile

上下文相关帮助

HelpContextId

帮助编号

Type

返回的数据类型,缺省为文本类型。

Type的参数可取值如下:

数值

说明

0

一个公式

1

一个数字

2

文本(字符串)

4

一个逻辑值(TRUE或FALSE)

8

一个单元格引用你

16

一个错误值

64

一个值得数组

注意:

  1. Application.InputBox调用的是InputBox方法,而不带标识的InputBox调用的InputBox函数;

  2. InputBox方法比InputBox函数具有更好的内置出错处理;

  3. 当用户点击“取消”时,InputBox方法返回的是FALSE,而InputBox函数返回的是长度为0的字符串。

【例1】

Sub test()

Dim num

num = Application.InputBox(Prompt:="请输入一个数值", Title:="输入", Type:=1)    '调用InputBox方法

If num <> False Then

MsgBox "输入内容为:" & Chr(10) & num

Else    '取消输入时返回FALSE

Debug.Print "用户取消了输入"

End If

End Sub

当输入的不是数字是会有如下提示:

【例2】

Sub test()

Dim rng As Range

On Error GoTo line

Set rng = Application.InputBox(prompt:="请选择区域", Type:=8)

Dim res$

For Each Row In rng.Rows

For Each cell In Row.Cells

res = res & cell.Value & Chr(9) '同一行不同值用制表符隔开

Next

res = res & Chr(10)

Next

MsgBox "选择区域内容如下:" & Chr(10) & res '加上换行符

line:

If Err.Number <> 0 Then

MsgBox Err.Description

End If

End Sub

(0)

相关推荐