Excel VBA 学习笔记(2)

本文深入探讨了VBA中处理字符串的各种方法,包括比较、转换、创建、获取长度、格式化、查找、提取、删除空格、返回字符代码、数值转换等操作。详细讲解了StrComp、StrConv、Format、Left、Right、Mid等函数的用法,并给出了实际应用示例,帮助读者掌握VBA字符串操作的精髓。
摘要由CSDN通过智能技术生成

参见:在VBA中处理字符串

VBA中的字符串

VBA不仅可以处理数字,也可以处理文本(字符串)。VBA提供了两类字符串:
一类为固定长度的字符串,声明时包含指字的字符数。例如,下面的语句

Dim strFixedLong As String*100

声明字符串变量后,无论赋予该变量多少个字符,总是只包含100个字符,但字符串最长不超过65526个字符,且需要使用Trim函数去掉字符串中多余的空格。定长字符串只有在必要时才使用。
另一类为动态字符串。例如,声明字符串变量

Dim strDynamic As String

后,可以给该变量任意赋值,最多可包含20亿个字符。

VBA中处理字符串的函数

比较字符串

通常,在VBA中进行字符串比较时,会用到比较运算符(如=、>等)、Like运算符和StrComp函数。此外,在模块的开头用Option Compare语句指定比较方式。

比较运算符
可以采用简单的逻辑运算符进行两个字符串的比较,即<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、=(等于)、<>(不等于)。此外,还可以使用Like运算符进行比较。

StrComp函数
StrComp函数返回字符串比较的结果。其语法为:

StrComp(string1,string2[,compare])

其中,参数string1string2为必需的参数,可以是任何有效的字符串表达式。
参数compare为可选参数,可设置为如下值:

  • 0 = vbBinaryCompare - 执行二进制比较(默认)
  • 1 = vbTextCompare - 执行文本比较,比较时不区分大小写
  • vbUseCompareOption=-1- 按照Option Compare 处设定的方式进行比较。

StrComp函数的返回值为:

内容 返回值
string1 < string2 -1
string1 = string2 0
string1 > string2 1
String1或String2为Null NUll

转换字符串

StrConv函数

使用StrConv函数来按指定类型转换字符串。其语法为:

StrConv(string,conversion,LCID)

其中,参数string为要转换的字符串,参数conversion为指定转换的类型,参数LCID为可选参数。

常量 意义
vbUpperCase 1 字符串转换成大写
vbLowerCase 2 字符串转换成小写
vbProperCase 3 字符串中每个字的开头字母转换成大写
vbUnicode 64 根据系统的缺省码页将字符串转换成Unicode
vbFromUnicode 128 字符串由Unicode转换成系统的缺省码页

Str函数
将数值转换成字符串,即返回代表一个数值的字符串。其语法为:

Str(number)

当一个数字转成字符串时,总会在前面保留一个空位来表示正负,即字符串的第一位一定是空格或正负号。如果参数number为正,返回的字符串前面包含一空格。Str函数将句点(.)作为有效的小数点。此外,CStr函数和Format函数已经取代了Str函数,CStr函数不用为正数的符号而添加前导空格,Format函数能够用来识别小数点。
* CStr函数*
CStr将数值表达式转换成String数据类型。示例如下:

MyDouble = 437.324    ' MyDouble 为 Double 类型
MyString = CStr(MyDouble)    ' MyString 的内容为"437.324"

[编程方法和技巧] 传递给CStr的未初始化的数字数据类型返回“0”,传递给CStr的未初始化的日期变量返回“0:00:00”。

创建字符串

Space函数
该函数返回指定数的空格的字符串。语法为:

Space(number)

其中,参数number必须,为字符串中指定的空格数。
如下例所示:

Sub CreateString1()
  Dim MyString
  ' 返回 10 个空格的字符串。
  MyString = Space(10)
  ' 将 10 个空格插入两个字符串中间。
  MyString = "Hello" & Space(10) & "World"
End Sub

String函数
该函数返回重复的字符或字符串。其语法为:

String(number,character)

其中,参数number必须,指定所返回的字符串的长度;参数character必须,指定字符的字符代码或字符串表达式。
例如,下面使用String函数生成指定长度且只含单一字符的字符串。

Sub CreateString2()
  Dim MyString
  MyString = String(5, "*")    ' 返回 "*****"
  MyString = String(5, 42)    ' 返回 "*****"
  MyString = String(10, "ABC")    ' 返回 "AAAAAAAAAA"
End Sub

如果参数number包含Null,则返回Null;如果参数character包含Null,则返回Null;参数character可以指定为字符串或者是ANSI字符代码,如:

strString1=String(128,”=”) ‘用”=”填充
strString2=String(128,0) ‘用Chr$(0)填充

[编程方法和技巧]
(1) String函数在用于创建较长的“_”,“-”,或者“=”构成的水平线以便给报表分段时十分有用。
(2) 当调用API函数向缓冲区写入字符串值时,首先要用String函数创建一个长度合适的字符串变量,并且用诸如Chr$(0)之类的单个字符来填充。

获取字符串的长度

可以使用Len函数来确定任何字符串或字符串表达式的长度,其语法为:

Len(string|varname)

其中,参数string为任何有效的字符串表达式;参数varname为任何有效的变量名称。两个参数必须取一。
利用LenB函数可以确定存储某变量所需的实际字节数。
下面的示例使用Len函数来获取某字符串的长度(字符数)或某变量的大小(位数)。

Type CustomerRecord    ' 定义用户自定义的数据类型
    ID As Integer    ' 将此定义放在常规模块中
    Name As String * 10
    Address As String * 30
End Type
Sub GetStrLen()
  Dim Customer As CustomerRecord    ' 声明变量
  Dim MyInt As Integer, MyCur As Currency
  Dim MyString, MyLen
  MyString = "Hello World"    ' 设置变量初值
  MyLen = Len(MyInt)    ' 返回 2
  MyLen = Len(Customer)    ' 返回 42
  
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值