VBA字符串数组|如何在Excel VBA中声明和初始化字符串数组?

Excel VBA字符串数组

在VBA中,字符串数组不过是一个数组变量,可以使用单个变量保存多个字符串值。

有关示例,请查看下面的VBA代码。

代码:

 Sub String_Array_Example()变暗的CityList(1到5)作为变体CityList(1)=“班加罗尔” CityList(2)=“孟买” CityList(3)=“加尔各答” CityList(4)=“海得拉巴” CityList(5)= “ Orissa” MsgBox CityList(1)&“,”&CityList(2)&“,”&CityList(3)&“,”&CityList(4)&“,”&CityList(5)结束 

在上面的代码中,我已声明为数组变量,并将数组的长度分配为1到5。

 变暗的CityList(1到5)作为变体 

对于此数组变量,我分配了5个城市名称,并在括号中提及每个数组计数。

CityList(1)=“班加罗尔” CityList(2)=“孟买” CityList(3)=“加尔各答” CityList(4)=“海得拉巴” CityList(5)=“ Orissa”

接下来,我编写了代码以在消息框中显示这些城市名称。

MsgBox CityList(1)&“,”&CityList(2)&“,”&CityList(3)&“,&&CityList(4)&”,“&CityList(5)

当我运行此代码时,我们将获得一个消息框,该消息框在一个消息框中显示所有城市名称。

我们都知道,这消除了为每个城市声明单个变量的任务,从而节省了很多时间。但是,您还需要学习的一件事是,我们仍然可以减少为字符串值编写的行代码。让我们看看我们如何为VBA字符串数组编写代码。

Excel VBA中的字符串数组示例

以下是excel vba字符串数组的示例。

您可以在此处下载此VBA字符串数组Excel模板– VBA字符串数组Excel模板

范例#1

正如我们在上面的代码中看到的那样,我们了解到可以根据确定的数组大小在变量中存储多个值。

现在,我们需要做的是不要提前确定阵列长度。

代码:

 Sub String_Array_Example1()变暗CityList()作为变体结束Sub 

如您在括号内上面看到的,我没有写任何长度。现在,使用VBA ARRAY函数为该变量插入值。

在数组内部传递双引号上的值,每个双引号之间用逗号(,)分隔。

代码:

 Sub String_Array_Example()Dim CityList()As Variant CityList = Array(“ Bangalore”,“ Mumbai”,“ Kolkata”,“ Hyderabad”,“ Orissa”)结束 

现在,保留旧代码以在VBA的消息框中显示城市名称的结果。

代码:

 Sub String_Array_Example1()变暗的CityList()作为变体CityList = Array(“班加罗尔”,“孟买”,“加尔各答”,“海得拉巴”,“奥里萨邦”)MsgBox CityList(0)和“,”和CityList(1)和“ ,“&CityList(2)&”,“&CityList(3)&”,“&CityList(4)结尾 

我在上面的代码中所做的一个更改是,由于我们尚未确定数组变量的下限和上限,并且我们使用了ARRAY函数,数组计数将从0开始而不是从1开始。

因此,这就是我们提到这些值的原因 CityList(0),ClityList(1),CityList(2),CityList(3)和CityList(4)。

现在,通过excel快捷键F5或手动运行代码,我们得到的结果与以前的代码相同。

范例#2

具有LBOUND和UBOUND函数的VBA字符串数组

如果您不想在单个消息框中显示所有城市列表,则需要包括循环,为循环再定义一个变量。

现在要包含FOR NEXT循环,我们不确定需要运行多少次代码,在这种情况下,我们可以将其确定为5次,但这并不是解决问题的正确方法。那么自动上下级数组长度标识符的想法呢?

当我们打开FOR NEXT循环时,通常根据情况将循环长度确定为1到5或1到10。不用手动输入数字,而是使用LBOUND和UBOUND函数自动确定下限值和上限值。

对于LBound和Ubound,我提供了数组名称,即CityList。 VBA LBound标识数组变量的下限值,而VBA UBound函数标识数组变量的上限值。

现在,在消息框中显示值,而不是插入序列号,而是让循环变量“ k”自动获取数组值。

代码:

 Sub String_Array_Example1()Dim CityList()作为变体Dim k作为整数CityList = Array(“ Bangalore”,“ Mumbai”,“ Kolkata”,“ Hyderabad”,“ Orissa”)对于k = LBound(CityList)到UBound(CityList) MsgBox CityList(k)下一个k结束子 

现在,消息框将分别显示每个城市的名称。

例子#3

具有拆分功能的VBA字符串数组

现在,假设您具有以下城市名称。

班加罗尔;孟买;加尔各答;海德拉巴德;奥里萨邦

在这种情况下,所有城市都将冒号合并在一起,从而将每个城市分隔开来。在这种情况下,我们需要使用SPLIT函数将每个城市分开。

为了 表达 提供城市清单。

代码:

 Sub String_Array_Example2()Dim CityList()As String Dim k As Integer CityList = Split(“ Bangalore; Mumbai; Kolkata; Hydrabad; Orissa”,对于k = LBound(CityList)到UBound(CityList)MsgBox CityList(k)下一个k结束子 

下一个参数是“分隔符”,即将每个城市与其他城市(在本例中为“冒号”)分开的一个字符是什么。

代码:

 Sub String_Array_Example2()Dim CityList()As String Dim k As Integer CityList = Split(“ Bangalore; Mumbai; Kolkata; Hydrabad; Orissa”,“;”)对于k = LBound(CityList)到UBound(CityList)MsgBox CityList(k )下一个k结束子 

现在,SPLIT函数拆分值也确定了最大的数组长度。

要记住的事情

  • LBOUND和UBOUND是确定数组长度的函数。
  • ARRAY函数可以为已声明的变量保存许多值。
  • 如果要使用ARRAY函数,则不要确定数组的长度。