当前位置: 首页 > news >正文

VBA字典与数组第二十讲:如何在代码运行时创建数组

《VBA数组与字典方案》教程(10144533)是我推出的第三套教程,目前已经是第二版修订了。这套教程定位于中级,字典是VBA的精华,我要求学员必学。7.1.3.9教程和手册掌握后,可以解决大多数工作中遇到的实际问题。

这套字典教程共两册,一共八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA字典与数组第二十讲:如何在代码运行时创建数组

fbe034303824e2c6b2f159cb6e5fbf5b.jpeg

【分享成果,随喜正能量】我们于日用必需的东西以外,必须还有一点无用的游戏与享乐,

生活才觉得有意思。。

第二十讲 如何在代码运行时创建数组

大家好,我们今日继续讲解VBA数组与字典解决方案第20讲内容:如何在代码运行时创建数组。数组大家并不陌生了,在之前我讲过很多,今日讲的是在VBA中代码运行的时候如何创建数组,为了实现这个目的,我们需要梳理一下下面的几个知识点:

1 创建数组的函数

Array函数。这个函数返回一个包含数组的Variant

语法:Array(arglist)

Arglist参数是一个用逗号隔开的值表,这些值用于给Variant所包含的数组的各元素赋值。如果不提供Arglist参数,则创建一个长度为 0 的数组。使用Array函数可以在代码运行时创建数组并把一系列数据保存在数组中,

2 LBound函数和UBound函数

这两个函数取得数组的最小和最大下标:

1)LBound函数:返回一个Long型数据,其值为指定数组维可用的最小下标,

语法如下:LBound(arrayname[, dimension])

2)UBound函数:返回一个Long型数据,其值为指定数组维可用的最大下标,

语法如下:UBound(arrayname[, dimension])

参数arrayname是必须的,数组变量的名称。

参数dimension是可选的,指定返回哪一维的下界,1表示第一维,2表示第二维,如此类推。默认为1。

  • 特别注意点:UBound函数与LBound函数一起使用,可以用来确定数组的大小。如:要想知道数组arr的上界是多少,则:UBound(arr);要想知道数组arr的下界是多少,则:LBound(arr)。想知道数组有多少个元素,则:UBound(arr)- LBound(arr)+1

3 Option Base数组下界的声明

Option Base是用来声明数组下标缺省下界的函数,在模块级别中使用。由于下界的缺省设置是 0,因此无需使用 Option Base 语句。如果使用该语句,则必须写在模块的所有过程之前。一个模块中只能出现一次 Option Base,且必须位于带维数的数组声明之前。注意 Dim、Private、Public、ReDim 以及 Static 语句中的 To 子句提供了一种更灵活的方式来控制数组的下标。不过,如果没有使用 To 子句显式地指定下界,则可以使用 Option Base 将缺省下界设为 1。使用 Array 函数或 ParamArray 关键字创建的数组的下界为 0;Option Base 对 Array 或 ParamArray 不起作用。Option Base 语句只影响位于包含该语句的模块中的数组下界。

4 代码运行时创建数组的实例

我们来看下面的示例代码:

Option Base 1

Sub MyNZsz_3() '第20讲

Dim arr As Variant

Dim i As Integer

arr = Array("A111", "A222", "A333", "A444", "A555", "A666", "A777", "A888")

For i = LBound(arr) To UBound(arr)

Sheets("20").Cells(i, 1) = arr(i)

Next

End Sub

代码窗口:

a238071b29b1d23231abeccbbd2edc9b.jpeg

代码解析:

1) MyNZsz_3过程使用Array函数创建一个数组用来保存数据并将其写入到工作表的单元格区域。

2)第1行代码使用Option Base语句声明数组下标的缺省下界为1,数组下标的缺省下界默认为0。

3)第5行代码使用Array函数创建数组用来保存数据。

4)第6行代码使用LBound函数和UBound函数取得数组的最小和最大下标。

5)第7行代码确定数组的大小后使用For...Next语句遍历数组元素并将数组元素依次写入到工作表的A列单元格中。

我们来看看代码运行后的截图:

83e360ec908974623e9a11f9a1c37b4b.jpeg

今日内容回向:

1 创建数组用什么函数?(Array函数)

2 数组的上下界是如何取得的?

c01e243e6deb7079b4dc1e86e426663a.jpeg

我多年的VBA实践经验,全部浓缩在以下教程中:

f93497c691bb0a141519571c4cb802a3.jpeg

1145c285ef017cc5fd0ec7ffc4b74ce2.jpeg



http://www.lryc.cn/news/474962.html

相关文章:

  • 字符串统计(Python)
  • NVR小程序接入平台/设备EasyNVR多个NVR同时管理视频监控新选择
  • 怎样能把图片做压缩处理?学会4款在线工具高效压缩图片
  • ZooKeeper 客户端API操作
  • 常用滤波算法(一)-限幅滤波法
  • 江协科技STM32学习- P33 实验-软件I2C读写MPU6050
  • BusHound工具的使用-调试USB
  • Hadoop生态圈框架部署(四)- Hadoop完全分布式部署
  • Spring Boot 与 Vue 共铸卓越采购管理新平台
  • leetcode3. Longest Substring Without Repeating Characters
  • Mongodb使用视图连接两个集合
  • SIP是什么?
  • Day 39 || 01背包、416. 分割等和子集
  • 调用detr-resnet-50进行目标检测
  • Chromium 中chrome.fontSettings扩展接口定义c++
  • 在Unity游戏开发在面试时会面试哪些内容?
  • 刘艳兵-DBA022-以下关于Oracle半连接的描述,哪些是正确的?
  • 人工智能与伦理:我们应该如何平衡科技与人性?
  • CRON组件一个复杂的一个简单的
  • 自定义日志打成jar包引入项目后不生效
  • RK3568平台开发系列讲解(中断篇)延迟工作实验
  • RabbitMQ 的集群
  • 整车功能架构 --- 智能座舱
  • java stream流的使用
  • (JVM)带你一起研究JVM的语法糖功能 和 JVM的即时编译器
  • 【Linux】ClickHouse 部署
  • js的小知识
  • 一些swift问题
  • Nginx安装配置详解
  • 汽车免拆诊断案例 | 2010款起亚赛拉图车发动机转速表指针不动