【VBA研究】用VBA取得EXCEL任意列有效行数
2015-07-21 11:57
525 查看
作者:iamlaosong
用VBA对Excel文件进行处理的时候,关键字段的列号编程时往往是不知道的,需要通过参数设定才能知道,因此,我们编程的时候,就不能用这样的语句取有效行数:
lineno = [B65536].End(xlUp).Row '从下至上找有效行数
上述语句中的列名“B”如果是变量,可以用字符串连接的方式实现,即:
pos_ems = "C"
lineno = Range(pos_ems & "65536").End(xlUp).Row
如果给的是列号,则用下列语句:
pos_ems = 3
lineno = Cells(65536, pos_ems).End(xlUp).Row
如果该列所有需要处理的单元格都有值,也可以用下列语句:
lineno = [B1].End(xlDown).Row '从上至下找有效行数
或者
ineno = Cells(pos_fst, pos_ems).End(xlDown).Row
语句中的pos_fst是有效数据的起始行,这个语句的好处是不用管工作表最大行数是65536还是1048576,缺点是如果有效数据只有一行或者该列有空值的话,将取不到有效行数,这也是这种方法不常用的主要原因。
上述语句中的变量pos_ems可以读取单元格的值,以便面对不同文件时随时设置:
用VBA对Excel文件进行处理的时候,关键字段的列号编程时往往是不知道的,需要通过参数设定才能知道,因此,我们编程的时候,就不能用这样的语句取有效行数:
lineno = [B65536].End(xlUp).Row '从下至上找有效行数
上述语句中的列名“B”如果是变量,可以用字符串连接的方式实现,即:
pos_ems = "C"
lineno = Range(pos_ems & "65536").End(xlUp).Row
如果给的是列号,则用下列语句:
pos_ems = 3
lineno = Cells(65536, pos_ems).End(xlUp).Row
如果该列所有需要处理的单元格都有值,也可以用下列语句:
lineno = [B1].End(xlDown).Row '从上至下找有效行数
或者
ineno = Cells(pos_fst, pos_ems).End(xlDown).Row
语句中的pos_fst是有效数据的起始行,这个语句的好处是不用管工作表最大行数是65536还是1048576,缺点是如果有效数据只有一行或者该列有空值的话,将取不到有效行数,这也是这种方法不常用的主要原因。
上述语句中的变量pos_ems可以读取单元格的值,以便面对不同文件时随时设置:
pos_fst = Cells(2, 7) pos_ems = Cells(3, 7) pos_sav = Cells(4, 7) lineno = [B65536].End(xlUp).Row '行数,文件数量 For unit_num = 5 To lineno '文件循环 datfile = Cells(unit_num, 2) '文件名称 datFullName = ThisWorkbook.Path & "\" & datfile If Dir(datFullName, vbNormal) <> vbNullString Then Workbooks.Open Filename:=datFullName '打开订单文件 If Application.Version >= "12.0" And ActiveWorkbook.FileFormat = 51 Then maxrow = Cells(1048576, pos_ems).End(xlUp).Row Else maxrow = Cells(65536, pos_ems).End(xlUp).Row End If Else MsgBox "数据文件不存在!", vbOKOnly, "iamlaosong" Exit Sub End If。。。
相关文章推荐
- 在VB6.0中怎么实现escape和unescape
- vb写bho
- vbMHWB控件同webbrowser一样
- VB获取IE8地址栏的URL
- VB POST数据
- VB与DDE进程通信
- C# 6.0 和VB.NET 14 新特性(翻译)
- 机房收费系统基本流程
- Opengl ES IBO(索引缓冲区) VBO(顶点缓冲区)创建一个立方体
- vba 中的异常处理
- 关于在64位win7下运行Virtualbox安装系统时出错(提示VBoxDD.DLL错误)的解决
- 简易配置文件的读取(VB.NET)
- VB6.0程序图标
- 解决Unable to load R3 module ...VBoxDD.dll (VBoxDD):GetLastError=1790
- 【VBS】发邮件
- VB .bas文件生成dll并且调用
- DVB-S相关术语说明
- DVB-S info
- The Role of DTV Network Interfaces in Media Controller Support for DVB
- VBS学习日记(一个) 开始了解