Excel VBA解读(144): 使用Application事件和缓存将更快地获取已使用单元格区域

论坛 期权论坛 期权     
完美Excel   2019-6-9 21:27   3975   0
学习Excel技术,关注微信公众号:
excelperfect

在上一篇文章中,建议加速检索已使用单元格区域最后一行方法之一是使用缓存和Application对象的AfterCalculate事件。

下面是演示代码:
'为缓存创建模块级数组
Dim UsedRows(1 To 1000, 1 To 2) AsVariant

Public Function GetUsedRows3(theRngAs Range)
    '对于Excel 2007及以后的版本,存储并获取已使用的单元格行数
   Dim strBookSheet As String
   Dim j As Long
   Dim nFilled As Long
   Dim nRows As Long
   
    '为此工作簿和工作表创建标签
   strBookSheet = Application.Caller.Parent.Parent.Name & "_"& _
        Application.Caller.Parent.Name
   
   If Val(Application.Version) >= 12 Then
        '查看缓存
        For j = LBound(UsedRows) ToUBound(UsedRows)
            If Len(UsedRows(j, 1)) > 0 Then
                nFilled = nFilled + 1
                If UsedRows(j, 1) =strBookSheet Then
                    '找到了
                    GetUsedRows3 = UsedRows(j,2)
                    Exit Function
                End If
            Else
                '如果第一行是空行则退出循环
                Exit For
            End If
        Next j
   End If
   
    '找到已使用的行数
   nRows = theRng.Parent.UsedRange.Rows.Count
   
   If Val(Application.Version) >= 12 Then
        '在缓存中存储
        nFilled = nFilled + 1
        If nFilled
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:195
帖子:39
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP