VBA数组(十四)
我们都知道,一个变量是一个存储值的容器。 有时,开发人员希望一次可以在一个变量中保存多个值。 当一系列值存储在单个变量中时,则称为数组变量。
数组声明
数组声明的方式与声明变量相同,只是数组变量的声明使用括号。 在下面的例子中,括号里提到了数组的大小。参考以下示例 -
- 'Method 1 : Using Dim
- Dim arr1() 'Without Size
- 'Method 2 : Mentioning the Size
- Dim arr2() 'Declared with size of 5
- 'Method 3 : using 'Array' Parameter
- Dim arr3
- arr3 = Array("apple","Orange","Grapes")
在上面代码中,
- 虽然数组大小被指定为
5
,但是当数组索引从零开始时,它可以保持6
个值。 - 数组索引不能是负数。
- VBScript数组可以在数组中存储任何类型的变量。因此,一个数组可以在一个数组变量中存储一个整数,字符串或字符。
赋值给数组
通过为每个要分配的值指定一个数组索引值,将这些值分配给数组。它可以是一个字符串。
例子
添加一个模块并添加以下代码 -
- Private Sub Constant_demo_Click()
- Dim arr()
- arr() = "" 'Number as String
- arr() = "VBScript" 'String
- arr() = 'Number
- arr() = 2.45 'Decimal Number
- arr() = #//# 'Date
- arr() = #12.45 PM# 'Time
- msgbox("Value stored in Array index 0 : " & arr())
- msgbox("Value stored in Array index 1 : " & arr())
- msgbox("Value stored in Array index 2 : " & arr())
- msgbox("Value stored in Array index 3 : " & arr())
- msgbox("Value stored in Array index 4 : " & arr())
- msgbox("Value stored in Array index 5 : " & arr())
- End Sub
当执行上面的函数时,它会产生下面的输出。
- Value stored in Array index :
- Value stored in Array index : VBScript
- Value stored in Array index :
- Value stored in Array index : 2.45
- Value stored in Array index : //
- Value stored in Array index : :: PM
多维数组
数组不仅限于一个维度,但它们最多可以有60
个维度。 二维数组是最常用的数组。
例子
在下面的例子中,一个多维数组被声明为3
行4
列。
- Private Sub Constant_demo_Click()
- Dim arr(,) as Variant ' Which has 3 rows and 4 columns
- arr(,) = "Apple"
- arr(,) = "Orange"
- arr(,) = "Grapes"
- arr(,) = "pineapple"
- arr(,) = "cucumber"
- arr(,) = "beans"
- arr(,) = "carrot"
- arr(,) = "tomato"
- arr(,) = "potato"
- arr(,) = "sandwitch"
- arr(,) = "coffee"
- arr(,) = "nuts"
- msgbox("Value in Array index 0,1 : " & arr(,))
- msgbox("Value in Array index 2,2 : " & arr(,))
- End Sub
当执行上面的函数时,它会产生下面的输出。
- Value stored in Array index : , : Orange
- Value stored in Array index : , : coffee
ReDim语句
ReDim
语句用于声明动态数组变量并分配或重新分配存储空间。
- ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
参数说明
- Preserve - 一个可选参数,用于在更改最后一个维度的大小时保留现有数组中的数据。
- Varname - 必需的参数,表示变量的名称,应遵循标准变量命名约定。
- Subscripts - 必需的参数,表示数组的大小。
例子
在下面的例子中,数组已经被重新定义,当数组的现有大小发生改变时,这些值被保存下来。
注意 - 调整数组的大小时,删除的元素中的数据将丢失。
- Private Sub Constant_demo_Click()
- Dim a() as variant
- i =
- redim a()
- a() = "XYZ"
- a() = 41.25
- a() =
- REDIM PRESERVE a()
- For i = to
- a(i) = i
- Next
- 'to Fetch the output
- For i = to ubound(a)
- Msgbox a(i)
- Next
- End Sub
当执行上面的函数时,它会产生下面的输出。
- XYZ
- 41.25
数组方法
VBScript中有各种内置函数,可以帮助开发人员有效地处理数组。 下面列出了与数组一起使用的所有方法。请点击方法名称来详细了解它们如何应用。
编号 | 方法 | 描述 |
---|---|---|
1 | LBound | 它返回一个整数,对应于给定数组的最小下标。 |
2 | UBound | 它返回一个整数,对应于给定数组的最大下标。 |
3 | Split | 它返回一个包含指定数量值的数组。根据分隔符分割。 |
4 | Join | 它返回一个包含数组中指定数量的子串的字符串。这是Split 方法的一个完全相反的功能。 |
5 | Filter | 它返回一个基于零的数组,该数组包含基于特定过滤条件的字符串数组的子集。 |
6 | IsArray | 它返回一个布尔值,表示输入变量是否是一个数组。 |
7 | Erase | 为数组变量恢复分配的内存。 |
VBA数组(十四)的更多相关文章
- Excel VBA入门(四)流程控制2-循环控制
所谓循环控制,即在循环执行一段代码,用于完成一些重复性任务. VBA中的循环控制语句主要有3种:for.while.loop.对于大多数人来说,for的使用频率最高,而我个人也觉得for是最为灵活的, ...
- 解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译)
解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译) http://improve.dk/how-are-vardecimals-stored/ 在这篇文章,我将深入研究 ...
- COJ986 WZJ的数据结构(负十四)
WZJ的数据结构(负十四) 难度级别:D: 运行时间限制:6000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 请你设计一个数据结构,完成以下功能: 给定一个大小 ...
- NeHe OpenGL教程 第三十四课:地形
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第十四课:图形字体
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- javaSE第二十四天
第二十四天 363 1:多线程(理解) 363 (1)JDK5以后的Lock锁 363 A:定义 363 B:方法: 364 C:具体应用(以售票程序为例) 364 ...
- javaSE第十四天
第十四天 92 1. 正则表达式(理解) 92 (1)定义: 92 (2)常见规则 92 A:字符 92 B:字符类 93 C:预定义字符类 93 D:边界匹 ...
- 《C++游戏开发》笔记十四 平滑过渡的战争迷雾(二) 实现:真正的迷雾来了
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9712321 作者:七十一雾央 新浪微博:http:/ ...
- perl 第十四章 Perl5的包和模块
第十四章 Perl5的包和模块 by flamephoenix 一.require函数 1.require函数和子程序库 2.用require指定Perl版本二.包 1.包的定义 2.在包间切 ...
- 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)
设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型) 1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的 ...
随机推荐
- mongodb批量update更新数据
需要先查找出相关的记录,然后循环处理更新数据.如下案例,更新所有status=1的数据的gender值为2 db.getCollection('test').find({"status&qu ...
- 004-行为型-05-职责链模式(Chain of Responsibility)
一.概述 为请求创建一个接收此次请求对象的链 该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连,所以被称作职责链模式. 在这种模式中,通常每个接收者都 ...
- SIEBEL BIP报表平台端口被占用
管理-服务器配置S 找到对应的服务名称: CRMSS2 组件输入:XMLP Report Server 选择[高级]后,查找 Static Port Number 即可修改端口号. 端口号可查询测试环 ...
- Docker容器(三)——容器端口映射
(1).容器端口映射 容器的端口映射用到了-p选项,-p [物理机端口]:[容器实例端口] 让centos:httpd运行在后台 [root@youxi1 ~]# docker run -d -p 8 ...
- IOS 根据数组的个数对UIButton进行重复或循环使用
//设置一个view view = [[UIView alloc] initWithFrame:CGRectMake(0, 38, 320, 30)]; view.backgroundColor = ...
- didMoveToSuperview方法认识和使用
由来: 今天给项目添加新功能——点击弹出阳历,阴历日期选择. 弹出日期选择是弹出的控制器,里面的日期选择控件是封装的View,View使用Xib画的, 遇到的问题是:控制器传数据给View,在awak ...
- C语言中结构体的构造函数
示例代码: #include <iostream> using namespace std; struct Node { int x, y, z; Node(int _x, int _y, ...
- easyui前台改变datagrid某单元格的值
有时候前台完成某个操作后要修改datagrid的值, 也许这个datagrid是没有保存的, 所以要修改后才能传递到后台; 也许要其他操作过后才需请求后台; 这些情况都需要前台对datagrid的单元 ...
- Python3之调试
程序能一次写完并正常运行的概率很小,基本不超过1%.总会有各种各样的bug需要修正.有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误 ...
- DevOps - 持续集成(Continuous Integration)
1 - 持续集成简介 持续集成(Continuous integration,简称CI)是软件的开发和发布标准流程中最重要的部分. 作为一种开发实践,在CI中可以通过自动化等手段高频率地去获取产品反馈 ...