隐藏行后,VBA 代码停止执行,没有错误

标签 vba excel

我在处理一些以前运行良好的代码时遇到了很大的困难。在我的一个子程序中,我隐藏了一堆行(准确地说是 1599 行),然后取消隐藏我需要的行,通常约为 200 行。查看代码:

Private Sub HideUnneededRows(numberToShow As Integer)
Dim thisSheet As Worksheet
Dim allHideableRows As String, rowsToShow As String
Dim firstRow As Integer
Dim secondRow As Integer
Dim lastRow As Integer
Dim lastRowToShow As Integer

    Set thisSheet = ThisWorkbook.Sheets(1)

    firstRow = thisSheet.Range("mass1").row
    secondRow = firstRow + 1
    lastRow = firstRow - 1 + maxNumberOfRows
    lastRowToShow = firstRow - 1 + numberToShow '//numberToShow is usually 200

    '//THIS NEXT LINE RUNS, BUT STOPS EXECUTING AFTER THE ACTION IS PERFORMED
    Range("A" + CStr(secondRow) + ":A" + CStr(lastRow)).EntireRow.Hidden = True 
    Range("A" + CStr(secondRow) + ":A" + CStr(lastRowToShow)).EntireRow.Hidden = False

End Sub

一切都很好,直到代码隐藏行(“Range("A"+....).Hidden”行的第一行)。它很好地执行隐藏操作,但随后不会到达下一行代码,这将取消隐藏一组不同的行。 我尝试过的事情:

  • 对范围字符串进行硬编码(即 Range("A25:A1623") 而不是 Range("A"+ CStr(secondRow) + ":A"+ ... .))
  • 通过 Rows 对象执行这两个隐藏操作(即 Rows("25:1623").Hidden = True)
  • 将这两条隐藏线提取到新模块中自己的 button_click 事件中,以查看它是否与当前所在的模块有关

所有这些都产生了完全相同的结果 - 代码在隐藏 1599 行后停止所有执行。

帮忙?!

最佳答案

感谢@PeterT,我的问题的解决方案是在运行代码之前关闭屏幕更新,然后在代码运行完成后重新打开它。新代码如下:

Private Sub HideUnneededRows(numberToShow As Integer)
Dim thisSheet As Worksheet
Dim firstRow As Integer
Dim secondRow As Integer
Dim lastRow As Integer
Dim lastRowToShow As Integer

    Set thisSheet = ThisWorkbook.Sheets(1)

    firstRow = thisSheet.Range("mass1").row
    secondRow = firstRow + 1
    lastRow = firstRow - 1 + maxNumberOfRows
    lastRowToShow = firstRow - 1 + numberToShow '//numberToShow is usually 200

    '//Turn off ScreenUpdating
    Application.ScreenUpdating = False
    '//THIS NEXT LINE WAS GIVING ME TROUBLES
    Range("A" + CStr(secondRow) + ":A" + CStr(lastRow)).EntireRow.Hidden = True 
    Range("A" + CStr(secondRow) + ":A" + CStr(lastRowToShow)).EntireRow.Hidden = False
    '//Turn ScreenUpdating back on
    Application.ScreenUpdating = True

End Sub

关于隐藏行后,VBA 代码停止执行,没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35853960/

相关文章:

vba - 在 VBA 中使用工作表索引而不是名称

excel - VBA 常量问题

vba - 在 VBA 中获取 "error: type mismatch"

vba - 200 个按钮全部更改一个文本框 - VBA Excel

excel - 有没有一种好方法可以跟踪 GIT 存储库中 Excel 工作表的变化?

vba - Excel 宏 - 无需进入 Visual Basic 即可打开宏?

forms - BoundValue是MultiPage或TabStrip控件的有效属性吗?

ms-access - MS Access - 使用相同的记录 ID 转到另一个子表单

excel - 从单元格引用中获取文件名和路径

excel - VBA调用SAP事务