【VB6|第20期】遍历Excel单元格的四种方法

日期:2023年7月19日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006


在这里插入图片描述


文章目录

  • 一、前言
  • 二、按单元格坐标遍历单元格
  • 三、按矩形区域遍历单元格
  • 四、按行范围遍历单元格
  • 五、按列范围遍历单元格


一、前言

最近有用到 VB6,VBA 操作 Excel,常用的方法就是遍历单元格,接着就是进行各种操作。这里总结了四种遍历单元格的方法,选择合适的拿去使用,效率会更高些哦 ^ - ^

在这里插入图片描述

二、按单元格坐标遍历单元格

按单元格索引遍历单元格是指通过指定行号和列号来访问 Excel 中的特定单元格。在电子表格中,每个单元格都有唯一的行号和列号,通过这些索引可以精确定位并获取该单元格中的数据。

  • 单元格坐标表示法:“第2行第1列” 是一种坐标表示法,在编程中较为常见。
  • 单元格地址表示法:“A2” 是一种电子表格软件中的单元格地址表示法,用于标识特定单元格的位置

在这里插入图片描述

封装代码:

Private Sub xlTrvseByCellIdx()
On Error Resume Next
'函数说明:按单元格坐标遍历单元格
'创建作者:Commas
'创建时间:2023-07-19
'修改时间:
'------传参说明------
'------传参说明------

    '(1)创建
    Dim xlApp As Excel.Application      'Excel COM 组件,Excel 应用程序的实例
    Dim xlBook As Excel.Workbook        'Excel COM 组件,Excel 应用程序中的一个工作簿(Workbook)
    Dim xlSheets As Excel.Sheets        'Excel COM 组件,Excel 工作簿中所有的工作表(Worksheet)
    Dim xlSheet As Excel.Worksheet      'Excel COM 组件,Excel 工作簿(Workbook)中的一个工作表
    'Set xlApp = New Excel.Application              'NO1:实例化对象
    Set xlApp = CreateObject("Excel.Application")   'NO2:实例化对象
    Set xlBook = xlApp.Workbooks.Open(App.Path & "\example.xlsx")
    Set xlSheets = xlBook.Worksheets

    '(2)操作
    xlApp.Visible = False         'Excel 应用程序窗口的可见性控制
    '当 ScreenUpdating = True 时 ,Excel 将显示对工作表的更改;
    '当 ScreenUpdating = False 时,Excel 将在后台执行操作,不显示对工作表的更改,从而提高执行速度。
    xlApp.ScreenUpdating = False  'Excel 应用程序的屏幕更新控制
    
    
    ' 遍历Sheet1中每个单元格
    Dim i As Long, j As Long
    Set xlSheet = xlSheets(1) ' xlSheets("Sheet1")
    For i = 1 To xlSheet.UsedRange.Rows.Count
        For j = 1 To xlSheet.UsedRange.Columns.Count
            Debug.Print i, j, xlSheet.Cells(i, j).Value
        Next j
    Next i

    
    xlApp.ScreenUpdating = True

    '(3)销毁
    ' 保存并关闭工作簿
    xlBook.Save     ' 保存Excel文件
    xlBook.Close    ' 关闭Excel文件
    xlApp.Quit      ' 关闭Excel Application对象
    
    ' 释放资源
    Set xlSheet = Nothing
    Set xlSheets = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub

调用代码:

call xlTrvseByCellIdx

输出结果:

 1             1            姓名
 1             2            部门
 1             3            年龄
 2             1            张三
 2             2            技术部
 2             3             18 
 3             1            李小龙
 3             2            技术部
 3             3             19 
 4             1            王五
 4             2            市场部
 4             3             20 
 5             1            赵六
 5             2            销售部
 5             3             21 
 6             1            钱七
 6             2            销售部
 6             3             22 

三、按矩形区域遍历单元格

矩形区域:通过指定起始单元格结束单元格的地址来遍历一个矩形区域,例如从 A1C6 这个矩形区域内的所有单元格。在这里插入图片描述

封装代码:

Private Sub xlTrvseByUsedRange()
On Error Resume Next
'函数说明:按使矩形区域单元格
'创建作者:Commas
'创建时间:2023-07-19
'修改时间:
'------传参说明------
'------传参说明------

    '(1)创建
    Dim xlApp As Excel.Application      'Excel COM 组件,Excel 应用程序的实例
    Dim xlBook As Excel.Workbook        'Excel COM 组件,Excel 应用程序中的一个工作簿(Workbook)
    Dim xlSheets As Excel.Sheets        'Excel COM 组件,Excel 工作簿中所有的工作表(Worksheet)
    Dim xlSheet As Excel.Worksheet      'Excel COM 组件,Excel 工作簿(Workbook)中的一个工作表
    'Set xlApp = New Excel.Application              'NO1:实例化对象
    Set xlApp = CreateObject("Excel.Application")   'NO2:实例化对象
    Set xlBook = xlApp.Workbooks.Open(App.Path & "\example.xlsx")
    Set xlSheets = xlBook.Worksheets

    '(2)操作
    xlApp.Visible = False         'Excel 应用程序窗口的可见性控制
    '当 ScreenUpdating = True 时 ,Excel 将显示对工作表的更改;
    '当 ScreenUpdating = False 时,Excel 将在后台执行操作,不显示对工作表的更改,从而提高执行速度。
    xlApp.ScreenUpdating = False  'Excel 应用程序的屏幕更新控制
    
    
    ' 遍历Sheet1中每个单元格
    Set xlSheet = xlSheets(1) ' xlSheets("Sheet1")
    Dim cell As Excel.Range
    
    'NO1;工作表中实际包含数据的范围 xlSheet.UsedRange
    Debug.Print "NO1;工作表中实际包含数据的范围 xlSheet.UsedRange"
    For Each cell In xlSheet.UsedRange.Cells
    'For Each cell In xlSheet.UsedRange '缩写,省略掉了.Cells,也是可以的
        ' 在这里进行单元格操作
        Debug.Print cell.Row, cell.Column, cell.Value
    Next cell
    
    'NO2;显式指定范围来引用工作表中的特定区域 xlSheet.Range
    Debug.Print ""
    Debug.Print "NO2;显式指定范围来引用工作表中的特定区域 xlSheet.Range"
    For Each cell In xlSheet.Range("A1:C6").Cells
    'For Each cell In xlSheet.UsedRange '缩写,省略掉了.Cells,也是可以的
        ' 在这里进行单元格操作
        Debug.Print cell.Row, cell.Column, cell.Value
    Next cell
    
    
    xlApp.ScreenUpdating = True

    '(3)销毁
    ' 保存并关闭工作簿
    xlBook.Save     ' 保存Excel文件
    xlBook.Close    ' 关闭Excel文件
    xlApp.Quit      ' 关闭Excel Application对象
    
    ' 释放资源
    Set xlSheet = Nothing
    Set xlSheets = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub

调用代码:

call xlTrvseByUsedRange

输出结果:

NO1;工作表中实际包含数据的范围 xlSheet.UsedRange
 1             1            姓名
 1             2            部门
 1             3            年龄
 2             1            张三
 2             2            技术部
 2             3             18 
 3             1            李小龙
 3             2            技术部
 3             3             19 
 4             1            王五
 4             2            市场部
 4             3             20 
 5             1            赵六
 5             2            销售部
 5             3             21 
 6             1            钱七
 6             2            销售部
 6             3             22 

NO2;显式指定范围来引用工作表中的特定区域 xlSheet.Range
 1             1            姓名
 1             2            部门
 1             3            年龄
 2             1            张三
 2             2            技术部
 2             3             18 
 3             1            李小龙
 3             2            技术部
 3             3             19 
 4             1            王五
 4             2            市场部
 4             3             20 
 5             1            赵六
 5             2            销售部
 5             3             21 
 6             1            钱七
 6             2            销售部
 6             3             22 

四、按行范围遍历单元格

行范围:可以通过指定起始行结束行来遍历特定的行,例如从第2行到第2行。
在这里插入图片描述
封装代码:

Private Sub xlTrvseByRangeRow(ByVal lngRowIdx As Long)
On Error Resume Next
'函数说明:指定行范围遍历单元格
'创建作者:Commas
'创建时间:2023-07-19
'修改时间:
'------传参说明------
'lngRowIdx:需要指定的行号
'------传参说明------

    If lngRowIdx < 1 Then Exit Sub

    '(1)创建
    Dim xlApp As Excel.Application      'Excel COM 组件,Excel 应用程序的实例
    Dim xlBook As Excel.Workbook        'Excel COM 组件,Excel 应用程序中的一个工作簿(Workbook)
    Dim xlSheets As Excel.Sheets        'Excel COM 组件,Excel 工作簿中所有的工作表(Worksheet)
    Dim xlSheet As Excel.Worksheet      'Excel COM 组件,Excel 工作簿(Workbook)中的一个工作表
    'Set xlApp = New Excel.Application              'NO1:实例化对象
    Set xlApp = CreateObject("Excel.Application")   'NO2:实例化对象
    Set xlBook = xlApp.Workbooks.Open(App.Path & "\example.xlsx")
    Set xlSheets = xlBook.Worksheets

    '(2)操作
    xlApp.Visible = False         'Excel 应用程序窗口的可见性控制
    '当 ScreenUpdating = True 时 ,Excel 将显示对工作表的更改;
    '当 ScreenUpdating = False 时,Excel 将在后台执行操作,不显示对工作表的更改,从而提高执行速度。
    xlApp.ScreenUpdating = False  'Excel 应用程序的屏幕更新控制
    
    
    ' 遍历Sheet1中每个单元格
    Set xlSheet = xlSheets(1) ' xlSheets("Sheet1")
    Dim cell As Excel.Range
    For Each cell In xlSheet.UsedRange.Rows(lngRowIdx).Cells
        ' 在这里进行单元格操作
        Debug.Print cell.Row, cell.Column, cell.Value
    Next cell

    
    xlApp.ScreenUpdating = True

    '(3)销毁
    ' 保存并关闭工作簿
    xlBook.Save     ' 保存Excel文件
    xlBook.Close    ' 关闭Excel文件
    xlApp.Quit      ' 关闭Excel Application对象
    
    ' 释放资源
    Set xlSheet = Nothing
    Set xlSheets = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub

调用代码:

Call xlTrvseByRangeCol(1)

输出结果:

 1             1            姓名
 2             1            张三
 3             1            李小龙
 4             1            王五
 5             1            赵六
 6             1            钱七

五、按列范围遍历单元格

列范围:您可以通过指定起始列结束列来遍历特定的列,例如从第 A 列到第 A 列 。
在这里插入图片描述

封装代码:

Private Sub xlTrvseByRangeCol(ByVal lngColIdx As Long)
On Error Resume Next
'函数说明:指定列范围遍历单元格
'创建作者:Commas
'创建时间:2023-07-19
'修改时间:
'------传参说明------
’lngColIdx :需要指定的列号
'------传参说明------

    If lngColIdx < 1 Then Exit Sub
    
    '(1)创建
    Dim xlApp As Excel.Application      'Excel COM 组件,Excel 应用程序的实例
    Dim xlBook As Excel.Workbook        'Excel COM 组件,Excel 应用程序中的一个工作簿(Workbook)
    Dim xlSheets As Excel.Sheets        'Excel COM 组件,Excel 工作簿中所有的工作表(Worksheet)
    Dim xlSheet As Excel.Worksheet      'Excel COM 组件,Excel 工作簿(Workbook)中的一个工作表
    'Set xlApp = New Excel.Application              'NO1:实例化对象
    Set xlApp = CreateObject("Excel.Application")   'NO2:实例化对象
    Set xlBook = xlApp.Workbooks.Open(App.Path & "\example.xlsx")
    Set xlSheets = xlBook.Worksheets

    '(2)操作
    xlApp.Visible = False         'Excel 应用程序窗口的可见性控制
    '当 ScreenUpdating = True 时 ,Excel 将显示对工作表的更改;
    '当 ScreenUpdating = False 时,Excel 将在后台执行操作,不显示对工作表的更改,从而提高执行速度。
    xlApp.ScreenUpdating = False  'Excel 应用程序的屏幕更新控制
    
    
    ' 遍历Sheet1中每个单元格
    Set xlSheet = xlSheets(1) ' xlSheets("Sheet1")
    Dim cell As Excel.Range
    For Each cell In xlSheet.UsedRange.Columns(lngColIdx).Cells
        ' 在这里进行单元格操作
        Debug.Print cell.Row, cell.Column, cell.Value
    Next cell

    
    xlApp.ScreenUpdating = True

    '(3)销毁
    ' 保存并关闭工作簿
    xlBook.Save     ' 保存Excel文件
    xlBook.Close    ' 关闭Excel文件
    xlApp.Quit      ' 关闭Excel Application对象
    
    ' 释放资源
    Set xlSheet = Nothing
    Set xlSheets = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub

调用代码:

Call xlTrvseByRangeRow(2)

输出结果:

 2             1            张三
 2             2            技术部
 2             3             18 

版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/131827870

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统编程(信号处理机制)

文章目录 前言一、中断&#xff0c;异常&#xff0c;信号的区别二、信号在Linux中的标识三、信号处理相关函数四、代码实验总结 前言 本篇文章我们来讲解信号的处理机制&#xff0c;信号处理在Linux操作系统中必不可少&#xff0c;这一点值得大家注意&#xff0c;信号又会与中…

DOM事件

文章目录 1.注册事件&#xff08;绑定事件&#xff09;1.1 注册事件概述1.2 addEventListener 事件监听方式1.3 attachEvent 事件监听方式1.4 注册事件兼容性解决方案 2.删除事件&#xff08;解绑事件&#xff09;2.1 删除事件的方式2.2 删除事件兼容性解决方案 3.DOM 事件流4.…

机器学习实践(2.1)LightGBM分类任务

前言 LightGBM也属于Boosting集成学习模型(还有前面文章的XGBoost)&#xff0c;LightGBM和XGBoost同为机器学习的集大成者。相比越来越流行的深度神经网络&#xff0c;LightGBM和XGBoost能更好的处理表格数据&#xff0c;并具有更强的可解释性&#xff0c;还具有易于调参、输入…

Kafka的基本概念及其关键原理

Apache Kafka是一种分布式事件存储和流处理平台。该项目旨在提供一个统一的、高吞吐量、低延迟的平台&#xff0c;用于处理实时数据流。 •Kafka可以通过Kafka Connect连接到外部系统&#xff08;用于数据导入/导出&#xff09;&#xff0c;并提供Kafka Streams库用于流处理应用…

回溯算法组合问题之77组合

题目&#xff1a; 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 题目链接&#xff1a;77. 组合 - 力扣&#xff08;LeetCode&#xff09; 示例&#xff1a; 解法&#xff1a; 回溯法三部曲&#xff1a; &a…

简易评分系统

目录 一、实验目的 二、操作环境 三、实验内容和过程 1.实验内容 2.代码 2.1 用户验证功能 2.2 菜单函数 2.3 评分功能 四、结果分析 总体的输出结果&#xff1a; 保存文件成功截图&#xff1a; 五、小结 一、实验目的 1.巩固和提高学生学过的基础理论和专业知识&am…

55 # 实现可写流

先在 LinkedList.js 给链表添加一个移除方法 class Node {constructor(element, next) {this.element element;this.next next;} }class LinkedList {constructor() {this.head null; // 链表的头this.size 0; // 链表长度}// 可以直接在尾部添加内容&#xff0c;或者根据…

java贪心算法案例

1.零钱找回问题 这个问题在我们的日常生活中就更加普遍了。假设1元、2元、5元、10元、20元、50元、100元的纸币分别有c0, c1, c2, c3, c4, c5, c6张。现在要用这些钱来支付K元&#xff0c;至少要用多少张纸币&#xff1f;用贪心算法的思想&#xff0c;很显然&#xff0c;每一步…

计算机网络 day7 扫描IP脚本 - 路由器 - ping某网址的过程

目录 network 和 NetworkManager关系&#xff1a; 实验&#xff1a;编写一个扫描脚本&#xff0c;知道本局域网里哪些ip在使用&#xff0c;哪些没有使用&#xff1f; 使用的ip对应的mac地址都要显示出来 计算机程序执行的两种不同方式&#xff1a; shell语言编写扫描脚本 …

漏洞攻击 --- TCP -- 半开攻击、RST攻击

TCP半开攻击&#xff08;半连接攻击&#xff09; --- syn攻击 &#xff08;1&#xff09;定义&#xff1a; sys 攻击数据是DOS攻击的一种&#xff0c;利用TCP协议缺陷&#xff0c;发送大量的半连接请求&#xff0c;耗费CPU和内存资源&#xff0c;发生在TCP三次握手中。 A向B…

为什么ConcurrentHashMap不允许插入null值而HashMap可以?

为什么ConcurrentHashMap不允许插入null值而HashMap可以&#xff1f; 文章目录 为什么ConcurrentHashMap不允许插入null值而HashMap可以&#xff1f;HashMap源码ConcurrentHashMap源码为什么ConcurrentHashMap需要加空值校验呢&#xff1f;二义性问题测试代码代码分析测试结果结…

LangChain + Embedding + Chromdb,关联使用ChatGLM的本地搭建训练平台教程

一.介绍 OpenAI 在国内用户注册会遇到各种阻力&#xff0c;目前可行的方法是使用本地数据集的功能实现联网搜索并给出回答&#xff0c;提炼出TXT、WORD 文档里的内容。 现在主流的技术是基于强大的第三方开源库&#xff1a;LangChain 。 文档地址&#xff1a;&#x1f99c;…

win11安装redis步骤详解

文章目录 一、redis的安装与下载1、下载2、解压3、启动redis4、测试是否安装成功 二、将redis加入到windows的服务中三、常用的redis服务命令 安装可参考的资料&#xff1a;https://www.runoob.com/redis/redis-install.html 一、redis的安装与下载 1、下载 下载地址&#xf…

提示工程师:如何写好Prompt

提示工程由来 提示工程是一门相对较新的学科&#xff0c;用于开发和优化提示以有效地将语言模型 (LM) 用于各种应用程序和研究主题。 研究人员使用提示工程来提高 LLM 在广泛的常见和复杂任务&#xff08;例如问题回答和算术推理&#xff09;上的能力。 开发人员使用提示工程…

120、仿真-51单片机温湿度光照强度C02 LCD1602 报警设计(Proteus仿真+程序+元器件清单等)

方案选择 单片机的选择 方案一&#xff1a;STM32系列单片机控制&#xff0c;该型号单片机为LQFP44封装&#xff0c;内部资源足够用于本次设计。STM32F103系列芯片最高工作频率可达72MHZ&#xff0c;在存储器的01等等待周期仿真时可达到1.25Mip/MHZ(Dhrystone2.1)。内部128k字节…

【Docker】Docker安装与操作

docker的安装与命令 一、安装 docker1. 安装依赖包2. 信息查看 二、Docker 镜像操作1. 搜索镜像2. 获取镜像3. 镜像加速下载4. 查看镜像相关信息5. 删除镜像6. 上传镜像7. 存出和载入镜像 三、Docker 容器操作1. 创建容器2. 查看容器3. 启动容器4. 停止容器5. 进入容器6. 容器与…

SpringBoot整合SpringCloudStream3.1+版本Kafka

SpringBoot整合SpringCloudStream3.1版本Kafka 下一节直通车 SpringBoot整合SpringCloudStream3.1版本的Kafka死信队列 为什么用SpringCloudStream3.1 Springcloud架构提供&#xff0c;基于spring生态能够快速切换市面上常见的MQ产品3.1后使用配置文件的形式定义channel&am…

# Linux下替换删除文件中的颜色等控制字符的方法

Linux下替换删除文件中的颜色等控制字符的方法 文章目录 Linux下替换删除文件中的颜色等控制字符的方法1 Linux下的控制字符&#xff08;显示的文字并不是他本身&#xff09;&#xff1a;2 颜色字符范例&#xff1a;3 替换4 最后 我们在shell编程显示输出时&#xff0c;会定义文…

Linux的时间函数

2023年7月19日&#xff0c;周三下午 我今天基于GitHub搭建了自己的博客网站&#xff0c;欢迎大家来我的个人博客网站阅读我的博客 巨龙之路的GitHub个人博客 (julongzhilu.github.io) 目录 time函数原型使用方法ctime函数原型使用方法疑惑gmtime、 localtime函数原型什么是分…

WEB:FlatScience

背景知识 sql注入 SQLite数据库知识 SQLite3注入方法 题目 用dirsearch进行扫描&#xff0c;下面几个关键目录&#xff1a;robots.txt&#xff0c;login.php&#xff0c;admin.php&#xff0c;剩下的目录就是一些pdf格式的论文了 一个一个访问并查看源代码&#xff0c;在查看l…