excel - VBA计算范围内的单元格数量

标签 excel vba

尝试计算要在状态栏上显示的范围内的单元格数量。不确定如何计算用作进度条分母的范围内的单元格数量。有什么想法吗?

For Each cell In Range("E11:G28,E33:G50,E57:G74,E79:G96,E101:G118,E130:G147,E152:G169,E175:G192,E198:G215,E221:G238")
    **lTotal = Range.Cells.Count**
    Application.StatusBar = "Processing cell " & cell.AddressLocal & _
                                    "    " & Format((lCounter / lTotal), "0%")
    cell.EntireRow.Hidden = (cell.Value = "")
    lCounter = lCounter = 1
Next cell

非常感谢

最佳答案

此版本逐行查看您的范围,而不是逐个单元格

它还会关闭ScreenUpdating以避免闪烁,重置StatusBar

Sub ReCut() 
Dim rData As Range 
Dim rng1 As Range 
Dim rng2 As Range 
Dim rcell As Range 
Dim lngCnt As Long 
Dim lngCalc As Long 

Set rData = Range("E11:G28,E33:G50,E57:G74,E79:G96,E101:G118,E130:G147,E152:G169,E175:G192,E198:G215,E221:G238") 

For Each rng1 In rData.Areas 
ltotal = ltotal + rData.Rows.Count 
Next 

With Application 
    .ScreenUpdating = False 
    .EnableEvents = False 
    lngCalc = .Calculation 
    .Calculation = xlCalculationManual 

    For Each rng2 In rData.Areas 
        For Each rcell In rng2.Rows 
            rcell.EntireRow.Hidden = (.CountBlank(rcell) = 3) 
            lngCnt = lngCnt + 1 
            .StatusBar = "Processing row " & lngCnt & "    " & Format((lngCnt / ltotal), "0%") 
        Next rcell 
    Next 


    .ScreenUpdating = True 
    .EnableEvents = True 
    .Calculation = lngCalc 
    .StatusBar = vbNullString 
End With 

End Sub  

关于excel - VBA计算范围内的单元格数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24117636/

相关文章:

vba - 如何使用 VBA 查找文件是否存在于 Microsoft Teams (SharePoint) 环境中?

excel - 基于Excel VBA,创建ADODB对象还是使用DOCMD.RUNSQL更好?赞成与反对有哪些?

excel - 如何区分线性区域和二次区域

excel - 在 Excel 中查询另一个表

excel - 如何将 MS-Access 查询转换为 MS-Excel 中的工作表

vba - 使用 vba 在模块中以编程方式创建表单

vba - 无法将同一项目两次添加到 CustomProperties 中吗?

excel - 在列中搜索字符串并在连续行中打印结果

vba - 如何使用 VBA 脚本中的 XIRR

vba - 带有 SAFEARRAY(VARIANT) 参数的 vararg 函数无法从 VBA 调用