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

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


【VB6|第20期】遍历Excel单元格的四种方法_第1张图片


文章目录

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


一、前言

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

【VB6|第20期】遍历Excel单元格的四种方法_第2张图片

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

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

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

【VB6|第20期】遍历Excel单元格的四种方法_第3张图片

封装代码:

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 这个矩形区域内的所有单元格。【VB6|第20期】遍历Excel单元格的四种方法_第4张图片

封装代码:

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行。
【VB6|第20期】遍历Excel单元格的四种方法_第5张图片
封装代码:

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 列 。
【VB6|第20期】遍历Excel单元格的四种方法_第6张图片

封装代码:

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

你可能感兴趣的:(VB6,Excel,excel,遍历单元格,range,vb6,vba)