如何使用Excel VBA Array?

您可以通过将光标置于宏中并按F5键从Visual Basic编辑器中运行宏,也可以通过打开“宏”对话框(ALT + F8)选择要运行的宏并单击“运行”来从Excel中运行宏。最好使用“调试”>“逐步进入”(按F8)从Visual Basic编辑器中运行这些宏,以便您可以观察它们的工作情况。功能区中没有“开发人员选项卡”的说明。.打开Excel。

  • 转到VBA编辑器(按Alt + F11)

  • 转到立即窗口。 (Ctrl + G)

  • 写在下面的代码。

Application.ShowDevTools =真

如何在Excel中插入VBA代码

转到开发人员选项卡>代码组> * Visual Basic

单击插入> *模块。

  • 将为您打开一个空白模块。

  • 在该模块中写/粘贴提供的代码

Untitled-1

如何在Excel中运行VBA代码

选择代码之间的任意位置,* Sub …​ End Sub

单击“运行并运行子程序” *或

F5

Untitled-1

静态数组变量可以使用数组变量来代替使用多个唯一变量来存储信息。

当您知道需要在数组中存储多少个元素时,可以使用如下所示的静态数组变量:

代码`Sub TestStaticArray()’在工作簿中将10个名称存储在数组变量MyNames()中Dim MyNames(1至10)As String’声明了一个静态数组变量Dim iCount As Integer For iCount = 1 To ThisWorkbook。 Sheets.Count MyNames(iCount)= ThisWorkbook.Sheets(iCount).Name Debug.Print MyNames(iCount)接下来的iCount Erase MyNames()’删除变量内容,释放一些内存End Sub` ==== Decode

Dim MyNames(1到10)作为字符串

我们将单个可验证的MyNames的尺寸设置为字符串,其中可以容纳10个项目。所以MyNames veriable是一个Array类型。

将iCount设为整数

我们已经声明了一个变量iCount作为整数,它只能容纳数值整数类型Value

对于iCount = 1到ThisWorkbook.Sheets.Count

ThisWorkbook.Sheets.Count将为我们提供工作簿中的工作表数。

ThisWorkbook,是指在其中编写代码的工作簿。

MyNames(iCount)= ThisWorkbook.Sheets(iCount).Name

通过循环,我们将每个工作表的名称分配给一个名为MyNames的单个变量。 MyNames是一个可验证的数组类型,因此它将每个工作表名称存储在数组的每个项目中。

Debug.Print MyNames(iCount)

将值分配给数组的每个项目后,它将立即在InstantWindow中打印该值,默认情况下,该值在VBA窗口的底部。

您可以查看每个值的分配,并在InstantWindow中显示其值。

Image

下一个iCount

下一步用于告诉Excel VBA中的For Loop,通过增加iCount计数器直到工作计数器中的iCount达到工作表总数,再次重复相同的任务。

动态数组变量动态数组变量在您事先不知道需要存储多少元素时非常有用。

除了不提供有关数组大小的任何信息外,您可以像声明静态数组变量一样声明动态数组变量。

在上面的示例中(将MyNames(1到10)设置为String),如果Number ofsheets大于10,则会出现错误,因为MyNames不能存储10个以上的Item。

代码`Sub TestDynamicArray()’将工作簿中的所有名称存储在数组变量MyNames()Dim MyNames()As String中,声明动态数组变量Dim iCount As Integer Dim Max As Integer Max = ThisWorkbook.Sheets。 Count’查找最大数组大小ReDim MyNames(1 To Max)’声明具有必要大小的数组变量For iCount = 1 To Max MyNames(iCount)= ThisWorkbook.Sheets(iCount).Name MsgBox MyNames(iCount)下一个iCount擦除MyNames()’删除变量内容,释放一些内存End Sub` ==== 解码

Dim MyNames()作为字符串

我们将单个可验证的MyNames维度化为字符串,这是一个数组类型,由于在可验证的名称之后打开和关闭了Paranthesis,但由于我们未提供其UpperLevel,因此无法在其中存储任何数据。

ReDim MyNames(最多1个)

Redim用于重新排列数组的大小,现在将分配Veriable数组类型的上层。

在这种情况下,工作簿中的总页数(最大值= ThisWorkbook.Sheets.Count)

===

MsgBox MyNames(iCount)

在上一个示例中,我们在“即时窗口”中的变量中打印了值,这一次,我们在MessageBox中打印了该值,其显示如下。如果您知道将需要一个包含1000个项目的数组变量,请使用静态变量。不利的一面是,每次仅存储10个项目的信息时,您每次都会使用1000个项目的内存。如果使用动态数组变量,则将更有效地使用内存。

Image

有时无法计算数组变量的大小。在这些情况下,需要根据需要增加数组变量的大小。当您使用ReDim语句更改数组变量的大小时,变量内容也将被删除,以避免在您重新设置数组变量的时候删除变量内容,您将需要使用ReDim Preserve语句。

代码`Sub GetFileNameList()’将所有文件名存储在当前文件夹中Dim FolderFiles()As String’声明动态数组变量Dim tmp As String,fCount As Integer fCount = 0 tmp = Dir(“ D:\ Test \。“),而tmp <>空fCount = fCount + 1 ReDim保留FolderFiles(1要fCount)’再次声明数组变量(大小+1)FolderFiles(fCount)= tmp tmp = Dir Wend MsgBox fCount&”文件名是在文件夹“&CurDir Erase FolderFiles”中找到删除的内容,释放一些内存End Sub` ==== Decode

Dim FolderFiles()作为字符串

由于在Veriable名称之后打开和关闭Paranthesis,我们将单个Veriable FolderFiles的尺寸确定为String,这是一种Array类型,但由于Veriable名称的原因,但是由于我们未提供其UpperLevel,因此无法在其中存储任何数据。

tmp = Dir(“ D:\ Test \。”)

Dir命令用作资源管理器,可以保存目录中所有文件和文件夹的名称。您也可以将所有文件限制为某些特定条件。 Dir(“ D:\ Test \ *。pdf”)将从所有文件限制为仅PDF文件或扩展名。

| === While tmp <>空

而不是对于Excel VBA中的循环,这一次,我们将使用Excel VBA WHILE LOOP重复相同的操作,其中将结束循环的条件设置为tmp不等于空,因此,直到tmp中有任何值可验证,循环将

| === ReDim保留FolderFiles(1到fCount)

数组可验证的FolderFile在开始位置没有任何上级,但是在每次重复中都会通过ReDim命令增加它的上一级。在第一次运行中,然后是2 ..依此类推,直到fCount。但是,每次增加上一级,它将丢失所有已经分配的变量。通过使用Preserve命令,我们可以保持或

Wend

Wend用来告诉VBA中的For Loops,再次重复相同的任务,直到满足条件为止。

| === MsgBox fCount&“文件名可在文件夹”&CurDir

中找到每次重复时,fcout都会增加+1,其最终值将是在该目录/文件夹中找到的文件数。 CurDir命令提供当前目录的名称。在这种情况下,“ D:\ Test”

Image