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

news2024/11/28 0:34:20

日期: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

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

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

相关文章

架构实战微服务架构拆解

作业内容 拆分电商系统为微服务。 背景&#xff1a;假设你现在是一个创业公司的 CTO&#xff0c;开发团队大约 30 人左右&#xff0c;包括 5 个前端和 25 个后端&#xff0c;后端开发人员 全部都是 Java&#xff0c;现在你们准备从 0 开始做一个小程序电商业务&#xff0c;请你…

2023牛客暑期多校训练营1--K Subdivision(最短路树)

题目描述 You are given a graph with n vertices and m undirected edges of length 1. You can do the following operation on the graph for arbitrary times: Choose an edge (u,v) and replace it by two edges, (u,w) and (w,v), where w is a newly inserted vertex.…

【毕业季】九年程序猿有话说

活动地址&#xff1a;毕业季进击的技术er 九年程序猿有话说 勇敢前行&#xff0c;绽放青春&#xff0c;不负韶华&#xff01;选择IT的原因职场新人如何选择工作工作中&#xff0c;如何快速成长工作中用技术做过的最有成就感的事&#xff1f;程序员三十五岁瓶颈你怎么看&#xf…

445. 两数相加 II

445. 两数相加 II 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数字都不会以零开头。 示例1&#xff1a; 输入&#xff1a;l1 [7,2,4,…

RocketMQ教程-(4)-主题(Topic)

本文介绍 Apache RocketMQ 中主题&#xff08;Topic&#xff09;的定义、模型关系、内部属性、行为约束、版本兼容性及使用建议。 定义​ 主题是 Apache RocketMQ 中消息传输和存储的顶层容器&#xff0c;用于标识同一类业务逻辑的消息。 主题的作用主要如下&#xff1a; 定义…

断路器分、合闸线圈直流电阻试验和绝缘电阻试验

断路器分、合闸线圈直流电阻试验 试验目的 对于断路器来说, 分、 合闸线圈是用于控制断路器分合闸状态的重要控制元件。 断路器停电检修时, 可以通过测试分、 合闸线圈的直流电阻来判断其是否正常。 试验设备 万用表 厂家&#xff1a; 湖北众拓高试代销 试验接线 分、 合闸线圈…

Linux系统进程概念详解

这里写目录标题 冯诺依曼体系结构操作系统(Operator System)1.概念2.目的3.管理4.系统调用和库函数概念 进程1.概念2.描述进程-PCB3.查看进程4.通过系统调用获取进程标示符5.通过系统调用创建进程-fork 进程状态1.Linux内核源代码2.进程状态查看 进程优先级1.基本概念2.查看系统…

dxf怎么转换成PDF格式?转换方法其实很简单

PDF文件是一种可靠的文件格式&#xff0c;可以在各种操作系统和软件上打开和查看。而dxf是CAD文件的一种格式&#xff0c;打开它一般都是需要相关的操作软件才能打开&#xff0c;不是特别方便&#xff0c;将dxf文件转换成PDF格式就可以很好的解决这一问题&#xff0c;下面教大家…

python:基于反卷积算法的 GEDI 波形树高特征提取

作者:CSDN @ _养乐多_ 本文将介绍如何对 GEDI(Global Ecosystem Dynamics Investigation)激光雷达数据中所标识激光测高数据点的波形数据使用反卷积算法提取树高特征。 文章目录 一、波形数据提取二、代码详细解释三、完整代码一、波形数据提取 波形数据提取参考博客:《p…

Nodejs+vue+elementui手机电脑产品维修售后服务管理系统

需求分析&#xff0c;也称为软件需求分析、系统需求分析或需求分析工程&#xff0c;是指开发人员经过充分的研究和分析&#xff0c;准确地理解用户和项目在功能、性能、可靠性等方面的具体需求&#xff0c;并将用户的非正式需求表述转化为确定系统必须执行的需求的完整定义的过…

pytorch实现图像remap

def gpu_remap(numpy_img,map_tensor):# 准备图像数据img_tensor torch.from_numpy(numpy_img).contiguous().cuda(non_blockingTrue)img_tensor img_tensor.permute(2,0,1).unsqueeze(0).float()res torch.nn.functional.grid_sample(img_tensor,map_tensor,modebilinear,p…

c语言练手项目【编写天天酷跑游戏2.0】EASYX图形库的运用。代码开源,素材已打包

天天酷跑项目的开发 项目前言 项目是基于Windows&#xff0c;easyX图形库进行开发的&#xff0c; 开发环境&#xff1a;Visual Studio 2022 项目技术最低要求&#xff1a; 常量&#xff0c;变量&#xff0c;数组&#xff0c;循环&#xff0c;函数。 文章目录 天天酷跑项目的…

单体架构与微服务架构

什么是单体架构 单体架构&#xff08;Monolithic Architecture&#xff09;是一种传统的软件架构模式&#xff0c;它将整个应用程序作为一个单一、自治的单元构建和部署。在这种架构中&#xff0c;应用程序的所有功能和组件都被集成到一个统一的代码库中。 在单体架构中&…

【Linux网络】网络编程套接字(一)基础部分

目录 理解源IP地址和目的IP地址理解源MAC地址和目的MAC地址数据在网络传输过程中有两套地址socket通信的本质端口号和目的端口号 Post(端口号) 和 Pid &#xff08;进程ID&#xff09;认识TCP协议和UDP协议 网络字节序 理解源IP地址和目的IP地址 因特网上每台计算机都有自己的…

Jmeter-使用http proxy代理录制脚本

Jmeter-使用http proxy代理录制脚本 第1步&#xff1a;打卡jmeter工具新增1个线程组 第2步&#xff1a;给线程组添加1个HTTP请求默认值 第3步&#xff1a;设置下HTTP请求默认值第4步&#xff1a;在工作台中新增1个----HTTP代理服务器 第5步&#xff1a;设置HTTP代理服务器…

C# List 详解二

目录 5.Clear() 6.Contains(T) 7.ConvertAll(Converter) ,toutput> 8.CopyTo(Int32, T[], Int32, Int32) 9.CopyTo(T[]) 10.CopyTo(T[], Int32) C# List 详解一 1.Add(T)&#xff0c;2.AddRange(IEnumerable)&#xff0c;3.AsReadOnly()&…

区间预测 | MATLAB实现QRFR随机森林分位数回归多输入单输出区间预测

区间预测 | MATLAB实现QRFR随机森林分位数回归多输入单输出区间预测 目录 区间预测 | MATLAB实现QRFR随机森林分位数回归多输入单输出区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现QRFR随机森林分位数回归多输入单输出区间预测 Matlab实现基…

JVM运行时数据区——方法区的内部结构

方法区用于存储加载的字节码文件的信息&#xff0c;运行时常量池&#xff0c;运行时常量池我们可以把它看作是一张映射表&#xff0c;其中保存了类中的常量&#xff0c;变量&#xff0c;方法的引用。

CSS 瀑布流效果效果

示例 <!DOCTYPE html> <html lang="cn"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>瀑布流效果</title><style>…

【iOS】weak关键字的实现原理

前言 关于什么是weak关键字可以去看看我以前的一篇博客&#xff1a;【OC】 属性关键字 weak原理 1. SideTable SideTable 这个结构体&#xff0c;前辈给它总结了一个很形象的名字叫引用计数和弱引用依赖表&#xff0c;因为它主要用于管理对象的引用计数和 weak 表。在 NSOb…