У меня есть довольно борьба с каким-то кодом, который работал нормально. В одном из своих подлодок, я прячу кучу строк (1599, чтобы быть точным), то UNHIDE те, которые мне нужны, как правило, около 200. Отъезд код:Код VBA прекращает выполнение без ошибок после скрытия строк
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» + ....). Скрытые «строки». Он выполняет действие hide просто отлично, но затем не достигает следующей строки кода, которая должна была бы скрывать другой набор строк. Вещи, которые я пробовал:
- жесткого кодирования строки диапазона (т.е.
Range("A25:A1623")
вместоRange("A" + CStr(secondRow) + ":A" + ....)
) - Выполнение этих двух скрыть действия через
Rows
объекта (т.е.Rows("25:1623").Hidden = True
) - Распаковка эти две скрыть строки в свое собственное событие
button_click
в новом модуле, чтобы узнать, было ли это что-то в этом модуле в настоящее время в
Все они дали e xact same result - код останавливает выполнение после того, как строки 1599 будут скрыты.
Помогите ?!
Я использовал ваш код, чтобы скрыть более 26 000 строк, и он отлично работал. Я заметил, что лист (ы) был пересчитан (по крайней мере частично, потому что у меня есть некоторые из моих собственных UDF, отмеченных как «Неустойчивые»). Возможно, попробуйте отключить события и обновления экрана до скрыть (и снова включить). – PeterT
@PeterT Спасибо за ваши комментарии. Код может быть дополнительно модифицирован и оптимизирован.Надеемся, что основная проблема решена в вопросе PO. С уважением, –
@PeterT YOU WIN !! Отключение событий не исправить, но отключить «ScreenUpdating» исправлена проблема. Почему это сработало? Почему во многих перерасчетах (у меня было приблизительно 4800 ячеек с условным форматированием) причиной смерти кода? – BGeorge