vba数组长度Visual Basic for Applications是一种重要的面向对象和事件驱动的编程语言。阵列是VBA的重要组成部分。如果你想处理大量的数据数组是必需的。今天,在这个中级教程中,我们将带您了解数组长度的概念。我们假设您熟悉VBA和编程基础。如果没有,你可以在Excel VBA上介绍此介绍性课程或者经历这本优秀的教程有助于您概述VBA

什么是数组

数组是一组变量,它共享相同的数据类型和名称。当我们使用单个项目时,只需要一个变量。但是,如果我们有类似类型的项目列表,则为每个项目声明变量没有意义。如果我们可以声明一系列变量,这更好。例如,如果我们需要一百个员工姓名,而不是声明100个不同的变量,最好只声明一个数组.By默认值,VBA阵列的下标在0开始时称为阵列的下限。它运行到您在dim语句中指定的号码,称为数组的上限。以下是您需要了解的一些事情。

数组大小限制取决于其数据类型和可用内存。可用内存取决于您的系统。常见的数据类型包括Integer、long Integer和Byte。如果您对编程细节感兴趣,那么这里有一个有趣的信息:VBA会自动将整数数据类型转换为长整数。

数组。长度属性给出了数组包含的元素的数量。它不同于数组所需的内存存储量。你可以了解更多关于VBA的数组处理与这个令人敬畏的课程

数组类型

以线性形式表示和存储数据的数组称为单维或一维数组。VBA数组的语法是这样的:

Dim arrayName(index) as dataType Dim EmpName(10) as String Dim EmpName(1 ~ 10) as String

它是一个包含一个或多个数组的数组。二维数组可以用包含行和列的表表示。这里,一个索引表示行,另一个索引表示列。二维数组的语法如下所示。下图清楚地说明了这个概念。

Dim ArrayName(Num1,Num2)为DataType,例如,DIM分数(3,3)为整数

二维阵列

为什么要使用动态阵列?

如果你不确定数组中需要多少下标,你应该怎么做?您可以猜测正确的数字,但这几乎总是会使您面临以下问题之一。如果您的猜测太低,并且试图访问高于数组上界的下标,VBA将生成错误消息。如果您的猜测过高,VBA仍然会将内存分配给数组中未使用的部分,因此您将浪费宝贵的系统资源。解决方案是使用动态数组。

让我们看一个简单的一维数组程序。如果你想要一个尖峰进入其他例子,你总是可以请参阅Excel先生的excel vba课程

例1:

Sub CommandButton1_Click()昏暗的EmpName(5)作为字符串为i = 1到5 EmpName(i) = InputBox(“输入员工名称”)单元格(i, 1) = EmpName(i)下一个结束Sub

在这个程序中,我们将EmpName声明为一个大小为5、数据类型为string的数组。使用For循环,我们遍历数组并将其初始化为不同的雇员名称。

在一行中声明多个数组。

可以在单行中声明多个数组。要了解它的完成,请查看此程序

子CommandButton1_Click()暗EmpName(3)作为字符串,EmpID(3)作为字符串,Empsal(3)作为单一i = 1到3 EmpName (i) = InputBox(“输入员工姓名”)EmpID (i) = InputBox(输入雇员ID) Empsal (i) = InputBox(“输入员工工资”)细胞(我,1)= EmpName(细胞(我,2)= EmpID(我)细胞(我,3)= Empsal下结束子(i)

在此程序中,声明了三个数组。所有这些都有三个。EmpName和Empidare声明为字符串阵列。粉刺是一个整数数组。我们使用For循环来迭代阵列并将数组元素初始化为各个值。

示例3:多维数组

如果公司希望在2天内追踪5个新加入员工的表现,可以在Excel VBA中创建5×2数组,由电子表格中的5倍2表表示。查看此程序以制作它更清晰

Sub CommandButton1_Click()昏暗的Salesvolume(2到6,2至3)作为单个DIM EMP作为整数,日为EMP = 2到6日的一天= 2 To3 SalesVolume(EMP,Day)= InputBox(“输入销售量”)细胞(EMP,Day)= Salesvolume(EMP,Day)第二天下一个EMP结束子

在这个程序中,使用两个for循环来接收销售量。然后将它们显示在电子表格中员工姓名的旁边。

例4:在VBA中使用数组计算平均值的程序

双功能平均(ListOfNumbers(),长度为整数)暗淡的x作为counter1 = 0的整数(长度- 1)x = x + ListOfNumbers (counter1)下平均= x /长度结束子昏暗的数组(3)双数组(0)= 3数组(1)= 4组(2)= 5 =平均(数组长度)

在此程序中,我们使用for循环来添加变量的总值。最后,我们将总值除以阵列的长度。结果是平均值。当然,而不是使用这个程序,你可以随时直接使用平均函数。查看此Excel VBA课程以查看它是如何完成的

示例5:从工作表读取到VBA数组

Dim Arr()作为Variant Arr =范围(“B1:C10”)DIM R1AS长DIM C1AS,对于R1 = 1至Ubound(Arr,1)'第一个阵列维度是行。对于C1 = 1到Ubound(Arr,2)'第二阵列维度为列。debug.printarr(R1,C1)下一个C1下一个R1

该程序从工作表中获取数据,并使用for循环输出值。如果您的数据范围是单个单元格,则可以使用此程序。

Dim Arr()作为变体暗淡rangenameas字符串Dim R1AS长昏暗C1AS长暗rr1as范围范围rangename =“therange”设置rr1 =范围(范围)如果rr1.cells.count = 1那么RedimArr(1到1,1至1)arr(1,1)= rr1.Value els arr =范围(范围)结束如果

例6:在动态数组中存储工作表名称的程序

还记得我们说过的动态数组吗?当你事先不知道所需数组的大小时,最好使用动态数组。在下一个示例中,我们将向您展示如何使用动态数组来存储名称。

子StuStWorksheetNames1()昏暗的SheetNames()作为字符串Dim TotalSheets作为整数昏暗的表格作为工作表暗淡的暗情我作为整数Dim strMessage作为字符串Totalsheets = ActiveWorkBook.Worksheets.Count RedimsheetNames(TotalSheets)对于i = 1 tototalsheets stortName(i  -  1)= ActiveWorkbook.worksheets(i).name next strmessage =“以下是工作表名:”&vbcrlf for i = 0 tototalsheets  -  1 strmessage = strmessage&stortnames(i)&vbcrlf next msgboxstrmessage结束子

学习编程的最佳方式是为自己尝试。所以请确保你得到了很多练习。如果你陷入任何点,你可以随时跳到这个终极的VBA课程来帮你一把!

Excel VBA的顶级课程

解锁Excel VBA和Excel宏
莱拉Gharani
4.7 (25,999)
畅销书
Microsoft Excel Macros和Excel VBA硕士
凯尔尤
4.5 (11,201)
畅销书
Excel VBA编程 - 完整指南
鲍里斯Paskhaver
4.5 (3660)
使用Excel VBA完成Web自动化
丹尼尔强
4.7 (718)
畅销书
Excel Macros&Excel VBA编程为初学者编程
andreas exadaktylos.
4.6 (814)
收视率最高
终极Excel VBA.
马克Talbert
4.6 (3,135)
Microsoft Excel VBA简介
凯尔尤
4.6 (1,133)
Excel VBA宏:超消歧Excel VBA编程
格兰特赌博
4.5 (955)
畅销书
Excel与Microsoft Excel VBA用户表单
凯尔尤
4.6 (1,144)
Excel VBA练习和实际项目
Karen Tateosyan.
4.5 (214)

更多Excel VBA课程

Excel VBA学生还学习

赋予你的团队。引领行业。

使用Udemy for Business订阅在线课程库和数字学习工具。

请求演示