打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
最完整的VBA字符串知识介绍

引言:本文学习整理自functionx.com,可能是我见过的最完整的VBA字符串相关知识介绍,有兴趣的朋友可以参阅。

字符串简介

字符串是一个或多个字符的组合。要声明变量为字符串,可以使用String或Variant数据类型。要初始化字符串变量,将其值放在双引号中并将其赋值给变量。下面是一些例子。

示例:

Sub Exercise()

   ActiveCell = '完美Excel'

End Sub

运行代码后,当前单元格中会输入字符串“完美Excel”。

示例:

Sub Exercise2()

   Dim FirstName As Variant

   Dim LastName As String

   FirstName = 'William'

   LastName = 'Sansen'

End Sub

发出哔哔声

如果你想的话,可以让电脑发出哔哔声来回应任何事情。为此,Visual Basic语言提供了一个名为Beep的函数。其语法是:

Public Sub Beep()

调用示例:

Sub Exercise3()

   Beep

End Sub

如果在程序运行时调用此函数,计算机将发出短暂的声音。

字符串联接

字符串联接包括将一个字符串添加到另一个字符串,可以使用+或&运算符实现。下面是一些例子。

示例:

Sub Exercise4()

   Dim FirstName As Variant

   Dim LastName As String

   Dim FullName As String

   FirstName = 'William'

   LastName = 'Sansen'

   FullName = LastName + ',' + FirstName

   ActiveCell = 'Full Name: ' & FullName

End Sub

结果如下图1所示。

图1

字符简介

获取数字的ASCII字符

美式英语中使用的字符和拉丁语中最常见的字符都是在字符代码列表或映射中创建的,每个字符都用一个介于0和255之间的数字表示。这意味着每个字符必须符合一个字节。

为了帮助找到此类数字的等效ASCII字符,Visual Basic语言提供了一个名为Chr的函数。其语法是:

Public Function Chr(ByVal CharCode As Integer) As String

调用此函数时,传递一个数字作为其参数。示例如下:

Sub Exercise5()

   Dim Character As String

   Dim Number As Integer

   Number = 114

   Character = Chr(Number)

   ActiveCell = Number & '的ASCII码是' &Character

End Sub

结果如下图2所示。

图2

除了查找数字的ASCII等价值外,Chr函数还可用于在程序中应用某些行为。例如,Chr(13)和Chr(10)的组合可为表达式断行,相当于vbCrLf运算符。

获取数字的宽ASCII字符

如果将小于0或大于255的数字传递给Chr函数,则会收到错误。可能会传递一个大于255的数字,原因是可能希望获得一个超出US英语的字符。为了支持这些数字,Visual Basic语言提供了该函数的另一个版本。其语法是:

Public Function ChrW(ByVal CharCode As Integer) AsString

这里的W代表宽字符(WideCharacter)。这使得将字符存储在内存中成为可能,相当于短整数数据类型,它可以保存-32768到32767之间的数字。通常,应该考虑字符符合Char数据类型,它应该是0到65535之间的正数。

示例:

Sub Exercise6()

   Dim Character As String

   Dim Number As Long

   Number = 358

   Character = ChrW(Number)

   ActiveCell = Number & '的ASCII字符是' &Character

End Sub

结果如下图3所示。

图3

字符串长度

字符串的长度是它包含的字符数。为了查找字符串的长度,Visual Basic语言提供了一个名为Len的函数。其语法是:

Public Function Len(ByVal Expression As String) As Integer

此函数接受一个字符串作为参数。如果该函数成功地计数了字符数(通常是这样),它将返回一个整数。下面是一个例子。

Sub Exercise7()

   Dim Item As String

   Dim Length As Integer

   Item = 'excelperfect'

   Length = Len(Item)

   ActiveCell = Item & '中的字符数是' &Length

End Sub

结果如下图4所示。

图4

Microsoft Excel提供了生成相同结果的LEN函数。

字符、字符串和过程

将字符或字符串传递给过程

与普通值一样,可以将字符或字符串传递给过程。创建过程时,在过程的括号中输入参数及其名称。然后,在过程的主体中,使用合适的参数。调用过程时,可以用双引号传递参数的值。同样,可以应用过程的任何功能,包括传递任意数量的参数,或者传递字符、字符串和其他类型参数的混合。还可以创建一个接收可选参数的过程。

从函数返回字符或字符串

若要创建返回字符或字符串的函数,使用Function关键字创建过程,并在括号的右侧包含前面带有As关键字的字符串数据类型,或使用$字符。下面是示例:

Function GetFullName$()

   Dim FirstName$, LastName$

   FirstName = 'Raymond'

   LastName = 'Kouma'

   GetFullName$ = LastName & ',' & FirstName

End Function

调用该函数时,可以将其用作普通函数,也可以检索它返回的值,并根据需要使用。下面是一个例子:

Sub Exercise8()

   ActiveCell = GetFullName$

End Sub

字符和字符串转换

要将表达式转换为字符串,可以调用VBA的CStr函数。其语法是:

Public Function CStr(ByVal Express As Variant) As String

该参数几乎可以是任何可以将其转换为字符串的表达式,在大多数情况下,它都可以。如果成功,函数将返回一个字符串。下面是一个例子:

Sub Exercise9()

   Dim DateHired As Date

   DateHired = #12/17/2021#

   ActiveCell = CStr(DateHired)

End Sub

CStr函数用于将任何类型的值转换为字符串。如果要转换的值是数字,则可以使用Str函数。其语法是:

Public Function Str(ByVal Number As Variant) As String

此函数需要一个数字作为参数。下面是一个例子:

Sub Exercise10()

   Dim Number As Double

   Number = 1505.5 / 2

   ActiveCell = Str(Number)

End Sub

数字十六进制转换

Visual Basic语言支持十六进制数。如果你有一个十进制数,但需要十六进制格式,可以转换它。为此,可以调用Hex函数。其语法是:

Function Hex(ByVal Number As { Byte | Integer | Long | Variant}) As String

此函数用于将基于整数或十进制数转换为其十六进制等效数,以字符串形式返回结果。下面是一个例子:

Sub Exercise11()

   Dim Number As Integer

   Number = 28645

   ActiveCell = Hex(Number)

End Sub

Microsoft Excel提供了更多函数来执行此类操作。

数字八进制转换

如果要将十进制数转换为八进制格式,可以调用Oct函数。其语法是:

FunctionOct(ByVal Number As { Byte | Integer | Long | Variant}) As String

此函数接受基于整数或十进制的数字,并将其转换为八进制等效值,以字符串形式返回结果。下面是一个例子:

Sub Exercise12()

   Dim Number As Integer

   Number = 28645

   ActiveCell = Oct(Number)

End Sub

Microsoft Excel提供了更多函数来执行此类操作。

大小写转换

如果显示的字符串或表达式的大小写必须相同,则可以将其所有字符转换为大写或小写。

要将字符、字符串或表达式转换为大写,可以调用VBA的UCase函数或Microsoft Excel的UPPER函数,这些函数接受一个参数作为要考虑的字符串或表达式。语法是:

Function UCase(ByVal Value As String) As String

Function UPPER(ByVal Value As String) As String

每个函数接收一个字符或字符串作为参数。如果字符已经是大写的,它将返回相同的字符。如果字符不是可读字符,则不会发生转换,函数将返回该字符。如果字符是小写的,则会将其转换为大写,然后函数将返回等效的大写字母。

下面是一个示例:

Sub Exercise13()

   Dim ProgrammingEnvironment As String

   ProgrammingEnvironment = 'Visual Basic for Application forMicrosoft Excel'

   ActiveCell = UCase(ProgrammingEnvironment)

End Sub

要将字符或字符串转换为小写,可以调用VBA的LCase函数或Microsoft Excel的LOWER函数。它们的语法是:

Function LCase(ByVal Value As String) As String

Function LOWER(ByVal Value As String) As String

该函数接受字符或字符串作为参数。如果字符不是可读的符号,它将保持“原样”。如果字符为小写,则不会转换。如果字符为大写,则会转换为小写。

字符串的子字符串

子字符串是现有字符串的一个字符或一组字符或符号,Visual Basic语言提供了创建、操作或管理子字符串的函数。要记住的主要规则是子字符串是字符串的一部分,并且依赖于字符串。换句话说,如果没有字符串,则不可能有子字符串。

字符串的左子字符串

如果有一个现有字符串,但希望使用字符串左侧字符中的多个字符创建一个新字符串,则可以使用Microsoft Excel 的LEFT函数或VBA的Left函数。它们的语法是:

Function LEFT(ByVal str As String, ByVal Length As Integer) As String

Function Left(ByVal str As String, ByVal Length As Integer) As String

每个函数都有两个参数,这两个参数都是必需的。第一个参数是现有字符串,第二个参数是从字符串左侧开始计算的字符数。下面是一个例子:

Sub Exercise14()

    Dim Process As String

    Process = 'Learning'

    ActiveCell = 'To ' & Left(Process, 5) & ' is to gain understanding'

End Sub

结果如下图5所示。

图5

字符串的右子字符串

要使用现有字符串右侧的一个或多个字符创建新字符串,调用MicrosoftExcel的RIGHT函数或VBA的Right函数。其语法是:

Function RIGHT(ByVal str As String, ByVal Length As Integer) As String

Function Right(ByVal str As String, ByVal Length As Integer) As String

这两个参数都是必需的。第一个参数是原始字符串,第二个参数是从字符串右侧开始计算的字符数。

字符串的中间子字符串

可能希望使用一些来自左侧、右侧或现有字符串内部的字符创建字符串。为此,Visual Basic语言提供了一个名为Mid的函数,Microsoft Excel配备了一个名为Mid的函数。下面是调用Mid函数的示例:

Sub Exercise15()

   Dim ProgrammingEnvironment As String

   ProgrammingEnvironment = 'VBA for Microsoft Excel'

   ActiveCell = 'The ' & Mid(ProgrammingEnvironment, 9, 15)& ' language'

End Sub

查找子字符串

对字符串执行的最常规的操作之一是找出它是包含某个字符还是某个连续的字符组。为此,Visual Basic语言提供了InStr函数和Microsoft Excel配有FIND函数。它们的语法是:

InStr([start,]string1, string2[, compare])

FIND(Find_Text,Within_Text, Start_Num)

在该函数的第一个版本中,String1参数是将对其执行操作的字符串。String2参数是要查找的字符或子字符串。如果在String1中找到String2(作为String1的一部分),函数将返回第一个字符的位置。下面是一个例子:

该函数的第一个版本要求解释器从左边检查String1,寻找String2。如果String1包含多个String2实例,则该函数将(仅)返回第一个实例的位置,任何其他后续实例都将被忽略。如果要跳过第一个实例或希望解释器从左侧字符以外的位置开始检查,使用第二个版本。在这种情况下,Start参数允许指定开始在String1中查找String2的起始位置。

InStr函数用于从左侧开始检查字符串。如果要从右侧开始检查,调用InStrRev函数,其语法是:

InstrRev(stringcheck,stringmatch[, start[, compare]])

替换字符串中的字符或子字符串

在字符串中找到字符或子字符串后,可以对其执行操作。可以执行的操作之一是用另一个字符或子字符串替换该字符或子字符串。为此,Visual Basic语言提供了Replace函数,Microsoft Excel提供了REPLACE函数。其语法是:

Replace(expression,find, replace[, start[, count[, compare]]])

第一个参数是将对其执行操作的字符串。第二个参数是要在expression中查找的字符或字符串。如果找到该字符或字符串,则第三个参数是要替换它的字符或字符串。

字符串上的其他操作

反转字符串

初始化字符串后,可以对其执行的操作之一是将其反转。为此,可以调用StrReverse函数。其语法是:

Function StrReverse(ByVal Expression As String) As String

此函数将需要反转的字符串作为参数。执行操作后,该函数返回一个由字符按相反顺序组成的新字符串。下面是一个例子:

Sub Exercise16()

   Dim strValue As String

   Dim strRev As String

   strValue = 'lecxE美完'

   strRev = StrReverse(strValue)

   ActiveCell = strValue & vbCrLf & strRev

End Sub

由于StrReverse函数返回字符串,因此可以将其写成StrReverse$。

字符串和空格

最简单的字符串可能是声明和初始化的字符串。在其他一些情况下,可以处理必须首先检查的字符串。例如,出于某种原因,字符串的左侧或右侧可能包含空白。如果只是开始对其执行某操作,该操作可能会失败。可以对字符串执行的第一个操作之一是删除字符串两侧的空白(如果有的话)。

要删除字符串左侧的所有空格,可以调用LTrim函数。其语法是:

Function LTrim(ByVal str As String) As String

要删除字符串右侧的所有空格,可以调用RTrim函数。其语法是:

Function RTrim(ByVal str As String) As String

要删除字符串两侧的空格,可以调用Trim函数。其语法是:

Function Trim(ByVal str As String) As String

创建空格字符串

如果要创建由一个或多个空格组成的字符串,可以调用Space函数。其语法是:

Function Space(ByVal Number As Integer) As String

此函数在编程上相当于在键入字符串时按空格键在两个字符之间插入空格。

<未完待续>

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Len、Lenb函数解读
PHP去除字符串开头或末尾逗号
Excel常用函数之LEFT函数
ASP用replace()替换字符串的用法
【JAVA字符串】java字符串操作方法汇总
Python 字符串
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服