excel最大行数限制能修改吗(Excel 如何获取工作表最大行和列)

No.1

由于版本不同,Excel可处理的最大行和列都有一定的限制要求,如何来获取这些值来对编辑的程序进行容错处理,就显得十分重要。

本节主要介绍两个属性,可返回工作表的行和列。

Excel 如何获取工作表最大行和列,两个属性基本解决,还不会吧

上图是两个属性:Application.Columns 和 Application.Rows

如果熟悉VBA,对此也不会陌生,Application.Columns 返回一 个 Range 对象,该对象代表活动工作表上的所有列;Application.Rows返回一 个 Range 对象,该对象代表活动工作表上的所有行。

语法:

Application.Columns

Application.Rows

在不使用对象识别符的情况下使用此属性等效于使用 ActiveSheet.Rows,也就是当前工作表的行数。

Excel 如何获取工作表最大行和列,两个属性基本解决,还不会吧

上图是示例,返回当前工作表行数,然后定义一个数组,保存到数组中。

注意:这个数组大小是有一定要求的,并不是说把所有行都会保存在数组中,由于内存硬件的限制会出现内存会溢出错误。

如何对这个错误进行规避呢?可以使用一些错误提示机制来进行。

本例中用到另一个对象Err,可以在出现内存溢出的时候提前结束定义数组,也就实现了溢出前停止数组定义,那么多出的数据就不能进行数组处理了。

其实,从这一方来讲,VBA并不能完美地解决任何问题,特别是当数据量达到一个量级的时候就无法进行了。

这就和计算机的硬件有关了,并不是软件存在问题,如果硬件达到无限可能,软件实际上是没有边际的。

这也就是说Excel是一个相对轻量组的数据管理软件,对于更大数据处理就无能为力了。

那样的情况下可以转移到数据库当中进行处理,是真的好。

Excel 如何获取工作表最大行和列,两个属性基本解决,还不会吧

No.2

代码

Private Sub CommandButton1_Click()
Dim rArr, ri As Long, R As Range, R1 As Range, R2 As Range, R3 As Range, Rs As Range
Set Rs = Application.Rows'返回行单元格
Set R1 = ActiveSheet.Range("A1")
Set R2 = ActiveSheet.Range("A2")
Set R3 = ActiveSheet.Range("A3")
ReDim rArr(0)
    For Each R In Rs
        On Error GoTo Ne100'如果出现错误 程序跳转到Ne100:
        ReDim Preserve rArr(ri)'重定义数组
        rArr(ri) = R.Value'数组赋值
        R1.Value = ri
        ri = ri + 1
    Next R
Ne100:
R2.Value = "当前数组有: " & UBound(rArr) & "个元素"
R3.Value = "当前工作表有: " & Rs.Count & "个单元格行"
MsgBox Err.Description & VBA.vbCrLf & Err.Number'输出错误提示
Err.Clear
Erase rArr'释放数组
Set Rs = Nothing
Set R = Nothing
ThisWorkbook.Save
End Sub

如果没有研究,不建议调试上述代码,特别是在重要文件当中,虽然做了一些避免内存溢出处理方法,但是在多次调试过程当中,同样会出现内存溢出,导致Excel应用重启。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 qibo_seo@163.com 举报,一经查实,本站将立刻删除。
(0)
打赏 微信扫一扫 微信扫一扫

相关推荐