日期:2023年7月19日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助
,帮忙点个赞
,也可以关注我
,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006
最近有用到 VB6
,VBA
操作 Excel
,常用的方法就是遍历单元格,接着就是进行各种操作。这里总结了四种遍历单元格的方法,选择合适的拿去使用,效率会更高些哦 ^ - ^
按单元格索引遍历单元格是指通过指定行号和列号来访问 Excel
中的特定单元格。在电子表格中,每个单元格都有唯一的行号和列号,通过这些索引可以精确定位并获取该单元格中的数据。
封装代码:
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
矩形区域
:通过指定起始单元格和结束单元格的地址来遍历一个矩形区域,例如从 A1
到 C6
这个矩形区域内的所有单元格。
封装代码:
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