VBA信息获取与处理第四个专题第二节:将工作表数据写入VBA数组

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。

教程共两册,二十个专题。今日分享内容是:VBA信息获取与处理第四个专题第二节:将工作表数据写入VBA数组2790fabbaa500d19e957f819b631fbcc.jpeg

【分享成果,随喜正能量】得失随缘,心无增减。生活,不论如何都会过去,不会永远甜,也不会永远苦,用一颗随遇而安的心态去生活,该吃饭吃饭,该睡觉睡觉,醒来便是重生。。

专题四 EXCEL工作表数据的读取、回填和查找

这个专题,我们讲解工作表数据的处理的问题,对于VBA而言,我给予的定位是“实现个人小型数据自动化处理的利器”,对于大多数朋友而言,利用VBA是与EXCEL相关联的,很多的代码也是用于处理EXCEL内或者相关的各种数据,工作表更是作为和用户的交互对象而存在,那么对于工作表的数据如何进行查找,以及如何读取就是一个十分关键的课题,我们这讲就来主要讲解这个问题。

ece818ff8da477134239340e426aef1b.jpeg

第二节 将工作表数据写入VBA数组

在上一节中我们讲了实现工作表数据与VBA代码间传输的几种方法,这讲我将我们将着重讲解如何将工作表的数据写入数组。

1 读取工作表上的范围并将其放入数组

在VBA中,可以直接读取工作表上的范围并将其放入数组,这种方法非常简单。例如,

Dim Arr() As Variant

Arr = Range("A1:C5")

上述代码中首先声明一个变体型可变数组变量,然后将这个变量指向指定的区域,如果我们不能确定这个区域的大小,或者这个区域是可变的,我们可以利用下面的语句;

① myarr = Sheets("41").UsedRange

② myarr = Sheets("40").[a1].CurrentRegion

③ myarr = Range("a2:c" & Range("c2").End(xlDown).row)

④ myarr = Range("a1:a" & Cells(Rows.Count, 1).End(xlUp).row)

⑤ myarr = Range("a2:f" & [a65536].End(xlUp).Row)

⑥ myarr1 = Range([A2], [A65536].End(xlUp))

上面的各种写法均是我的第三套教程《VBA数组与字典解决方案》中的一些实际写法,第一种表示整个工作表的使用区域,第二种是以“A1”单元格为起点的矩形区域,第三种是表示A2到C列最后一个不为空的单元格的矩形区域,第四种是表示A列的使用区域(含空格),第五种是A2到F列的最后使用单元格的区域(适用于低版本的excel),第六种是A列第二个单元格之下的使用区域(含空单元格)

2 读取工作表上指定范围获得数组后维数的确认

利用上述方案将工作表中的数据引入VBA数组后,我们要注意该数组始终是二维的。第一个维度是行,第二个维度是列。因此,下面的例子:

Dim Arr() As Variant

Arr = Range("A1:C5")

Arr被隐式地调整为Arr(1 to 5,1 to 3),其中5是行数,3是列数。即使工作表数据位于一行或一列(例如,Arr(1 to 10,1 to 1))中,也会创建二维数组。加载工作表数据的数组始终具有等于1的下限(LBound),而不管模块中可能具有什么选项基指令。你不能改变这种行为。例如:

Dim Arr() As Variant

Arr = Range("A1:A10")

这里,Arr由VBA自动标注为Arr(1 to 10,1 to 1)。您可以使用如下代码在工作表值数组中循环:

Sub MYNZC()

Dim Arr() As Variant

Arr = Range("A1:B10")

Dim R As Long

Dim C As Long

For R = 1 To UBound(Arr, 1) ' 数组第一维表示行.

For C = 1 To UBound(Arr, 2) '数组第二维表示列

Debug.Print Arr(R, C)

Next

Next

End Sub

代码截图:

a147d46cb560199ce8e522df7b900c89.jpeg

代码的运行:

33abaf3c445f7ea2f045ba1b1a7fd574.jpeg

3 工作表上指定范围如果是一个单元格时

代码的运行:

7b7a12c39355f6eb10e21d3ff1d1eb5a.jpeg

上面的代码成功的避免了这种错误。大家在利用这种数组赋值时避免这类错误的发生。

本节知识点回向:读取指定范围的数据到数组有哪些方法可以利用?读取后的数组是几维数组?如何避免指定范围只有一个单元格的情况?

本专题参考程序文件:004工作表.XLSM

我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:

d158988f302d22def1da8be6ab049a4d.jpeg

aada174aaa532a3b5a8454551539e099.jpeg

b7b7bccb1525e432dc96123c449e4dda.jpeg



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/63126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单链表---合并两个链表

将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 struct ListNode {int val;struct ListNode* next; }; w 方法一---不使用哨兵位 我们创建一个新链表用于合并两个升序链表, 将两个链表中最小的结点依次尾插到…

SD控制器设计:从协议到RTL实战,精通数字IP设计

SD 卡作为一种便捷的存储设备,广泛应用于各类电子设备中。而在这背后,SD 控制器的设计起着至关重要的作用。SD控制器设计是数字集成电路(IC)设计领域中的一项关键技能,特别是在系统芯片(SoC)设计…

windows系统的环境变量(系统变量)不能编辑可能是这个原因

有些电脑从开始菜单那搜索“环境变量”后是没法编辑系统变量的,只能从设置里面进”环境变量“来进行编辑。 可以观察到系统环境变量即便是点击到了,但还是无法进行编辑

开发手札:Win+Mac下工程多开联调

最近完成一个Windows/Android/IOS三端多人网络协同项目V1.0版本,进入测试流程了。为了方便自测,需要用unity将一个工程打开多次,分别是Win/IOS/Android版本,进行多角色联调。 在Win开发机上,以Windows版本为主版…

【全网最新】若依管理系统基于SpringBoot的前后端分离版本开发环境配置

目录 提前准备: 下载源代码 设置依赖 设置后台连接信息 运行后台 运行前端 安装npm依赖 启动前端 登录网页客户端 提前准备: 1、安装mysql 5以上就可以。 2、安装redis. 3、安装npm npm下载地址:https://nodejs.org/dist/v22.12…

vscode CMakeLists中对opencv eigen的引用方法

CMakeLists.txt 项目模式(只有一个main函数入口) cmake_minimum_required(VERSION 3.5)project(vsin01 VERSION 0.1 LANGUAGES CXX)set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON)set(OpenCV_DIR G:/MinGW_Opencv/opencv4.10/opencv…

Leetcode day1.两数相加(2) 2.整数反转(7)

注意点:1.链表会出现其中一个已经为空,另一个缺还是有数据 2.相加时会出现进位操作 解法一、 利用队列的性质(基础不好 第一时间想到的) 很像队列的性质,先进先出,逐步计算。但是最后要换成链表样式。 …

【大数据技术基础 | 实验十四】Kafka实验:订阅推送示例

文章目录 一、实验目的二、实验要求三、实验原理(一)Kafka简介(二)Kafka使用场景 四、实验环境五、实验内容和步骤(一)配置各服务器之间的免密登录(二)安装ZooKeeper集群&#xff08…

AndroidAutoSize实战教程:今日头条屏幕适配方案详解

如何在项目中结合 AndroidAutoSize 来进行今日头条屏幕适配,我会具体讲解如何用 AndroidAutoSize 实现屏幕适配,并结合 Kotlin 代码举例分析。 通过 AndroidAutoSize 库来实现屏幕适配,确保在不同的屏幕尺寸、分辨率、密度下,应用…

【贪心算法】贪心算法五

贪心算法五 1.跳跃游戏 II2.跳跃游戏3.加油站3.单调递增的数字 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.跳跃游戏 II 题目链接&…

【Axios】如何在Vue中使用Axios请求拦截器

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

4.5 TCP 报文段的首部格式

欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅! 文章目录 前言1 TCP 报文段的基本结构2 固定部分2.1 源端口与目的端口2.2 序号2.3 确认号2.4 数据偏移2.5 保留字段2.6 控制位2.7 窗口2.8 检验和2.9 紧急指针 3 可变部分3.1 选项3.2 填…

MySQL数据集成到广东省追溯平台的销售信息同步方案

销售信息同步--外购上报流程2:MySQL数据集成到广东省特殊食品电子追溯平台 在现代数据驱动的业务环境中,确保销售信息的准确性和及时性至关重要。本文将分享一个具体的技术案例,展示如何通过轻易云数据集成平台,将MySQL中的销售信…

Nginx配置https(Ubuntu、Debian、Linux、麒麟)

Ubuntu操作系统,Debian系统底层是Ubuntu,差异不大 ubuntu 安装nginx 1.安装依赖 sudo apt-get update sudo apt-get install gcc sudo apt-get install libpcre3 libpcre3-dev sudo apt-get install zlib1g zlib1g-dev sudo apt-get install openssl lib…

【优选算法 二分查找】二分查找入门详解:二分查找 & 在排序数组中查找元素的第一个和最后一个位置

二分查找 题目描述 题目解析 暴力解法 我们可以从左往右遍历一次数组,如果存在 target 则返回数组的下标,否则返回 -1; 时间复杂度 O(N),因为没有利用数组有序的特点,每次比较只能舍弃一个要比较的数&…

Linux镜像文件制作

本文介绍Linux镜像文件制作。 嵌入式系统开发调试及量产需要涉及到Linux镜像文件的制作,本文结合一个实例简要介绍Linux镜像文件的制作。 1.确定磁盘空间布局 在制作镜像文件之前应提前确定好磁盘空间布局,也就是地址空间划分,如这里的磁盘…

时频转换 | Matlab格拉姆角和场Gramian angular summation field一维数据转二维图像方法

目录 基本介绍程序设计参考资料获取方式 基本介绍 时频转换 | Matlab格拉姆角和场Gramian angular summation field一维数据转二维图像方法 程序设计 clear clc % close all load x.mat % 导入数据 x x(1:5120); % 本数据只选择5120个点进行分析 fs 6400 ; % 数据采样频…

vue3 vite ts day1

创建项目: npm init vitelatest 来创建项目 第二布: y 第三步:project name :项目名称 第四步:select a framework 选择框架 熟悉那种选择那种,当前选择vue 第五步:select a variant&…

深度学习 | pytorch + torchvision + python 版本对应及环境安装

Hi,大家好,我是半亩花海。要让一个基于 torch 框架开发的深度学习模型正确运行起来,配置环境是个重要的问题,本文介绍了 pytorch、torchvision、torchaudio 及 python 的对应版本以及环境安装的相关流程。 目录 一、版本对应 二…

LearnOpenGL学习(高级OpenGL -- 深度测试,模板测试,)

深度测试 深度缓冲用来防止被阻挡的面渲染到其他面的前面,深度缓冲就像颜色缓冲,在每个片段中储存了信息, 当深度测试(Depth Testing)被启用的时候,OpenGL会将一个片段的深度值与深度缓冲的内容进行对比。OpenGL会执行一个深度测…