我们都知道,一个变量是一个存储值的容器。 有时,开发人员希望一次可以在一个变量中保存多个值。 当一系列值存储在单个变量中时,则称为数组变量。

数组声明

数组声明的方式与声明变量相同,只是数组变量的声明使用括号。 在下面的例子中,括号里提到了数组的大小。参考以下示例 -

'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个维度。 二维数组是最常用的数组。

例子

在下面的例子中,一个多维数组被声明为34列。

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数组(十四)的更多相关文章

  1. Excel VBA入门(四)流程控制2-循环控制

    所谓循环控制,即在循环执行一段代码,用于完成一些重复性任务. VBA中的循环控制语句主要有3种:for.while.loop.对于大多数人来说,for的使用频率最高,而我个人也觉得for是最为灵活的, ...

  2. 解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译)

    解剖SQLSERVER 第十四篇    Vardecimals 存储格式揭秘(译) http://improve.dk/how-are-vardecimals-stored/ 在这篇文章,我将深入研究 ...

  3. COJ986 WZJ的数据结构(负十四)

    WZJ的数据结构(负十四) 难度级别:D: 运行时间限制:6000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 请你设计一个数据结构,完成以下功能: 给定一个大小 ...

  4. NeHe OpenGL教程 第三十四课:地形

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  5. NeHe OpenGL教程 第十四课:图形字体

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  6. javaSE第二十四天

    第二十四天    363 1:多线程(理解)    363 (1)JDK5以后的Lock锁    363 A:定义    363 B:方法:    364 C:具体应用(以售票程序为例)    364 ...

  7. javaSE第十四天

    第十四天    92 1. 正则表达式(理解)    92 (1)定义:    92 (2)常见规则    92 A:字符    92 B:字符类    93 C:预定义字符类    93 D:边界匹 ...

  8. 《C++游戏开发》笔记十四 平滑过渡的战争迷雾(二) 实现:真正的迷雾来了

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9712321 作者:七十一雾央 新浪微博:http:/ ...

  9. perl 第十四章 Perl5的包和模块

    第十四章 Perl5的包和模块 by flamephoenix 一.require函数  1.require函数和子程序库  2.用require指定Perl版本二.包  1.包的定义  2.在包间切 ...

  10. 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)

      设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型) 1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的 ...

随机推荐

  1. ActionBar 自定义布局定义

    ActionBar 自定义布局定义   Android系统中ActionBar默认的布局不美观且难于控制,通过为ActionBar自定义布局的方式可以灵活控制ActionBar. 效果: 工具/原料 ...

  2. Flutter利用GridView实现网格的商品布局

    GridView.count 生成的是静态网格 效果: 代码: import 'package:flutter/material.dart'; void main() { runApp(MyApp() ...

  3. 【tshark tcpdump】linux网络排查

    抓包: 1.tcpdump 2.tshark是wireshark的命令行版. tshark使用示例: ,实时打印当前http请求的url # tshark -s -i eth0 -n -f 'tcp ...

  4. mysql遇见Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的问题

    问题出现的原因: MySQL 5.7.5及以上功能依赖检测功能.如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列 ...

  5. ELK之7版本Elastic Maps功能介绍

    Elasticsearch 7.0 中还引入了一个新的聚合来处理地理地图图块,允许用户在地图上放大和缩小,而不会改变结果数据的形状,实现更加平滑地缩放 Elastic Maps:使用纳秒精度存储时序数 ...

  6. docker 在 centos7.* 上的部署及问题解决

    最近尝试搭建docker 环境,其实个人是比较喜欢“菜鸟学习系列”的知识的,怎奈它的讲解是以Ubuntu为主的,最后找到一个搭建学习系列,感觉写的很好,主要是页面风格清晰明了,遂决定按照此教程学习搭建 ...

  7. 12、OpenCV实现图像的直方图处理

    1.直方图 一幅图像由不同灰度值的像素组成,图像中灰度的分布情况是该图像的一个重要特征.图像的灰度直方图就描述了图像中灰度分布情况,能够很直观的展示出图像中各个灰度级所占的多少.图像的灰度直方图是灰度 ...

  8. 微信小程序常用控件汇总

    1.图片标签: <image src="/images/aaa.png"></image> 2.文本标签: <text>Hello</te ...

  9. Apache Flink SQL

    本篇核心目标是让大家概要了解一个完整的 Apache Flink SQL Job 的组成部分,以及 Apache Flink SQL 所提供的核心算子的语义,最后会应用 TumbleWindow 编写 ...

  10. [转帖]Linux内核系统体系概述

    Linux内核系统体系概述 https://www.cnblogs.com/alantu2018/p/8447369.html Linux 内核主要由 5 个模块构成,它们分别是: 进程调度模块 用来 ...