Зависает макрос наглухо - VBA
Формулировка задачи:
Добрый день.
с утра написал - работал быстро, буквально пару секунд.
сейчас же висит на полминуты и проц на 100% гасит.
Как вычленить проблему?
Листинг программы
- Public Sub Report()
- ' Очищаем диапазон от предыдущих сотрудников
- ActiveWorkbook.Worksheets("Досье").Range("C6:N14").ClearContents
- ' Получаем имя ФИО сотрудника
- Dim User As String
- User = ActiveWorkbook.Worksheets("Досье").Range("C3").Value
- ' Обходим листы
- For i = 1 To 12
- ' Последняя строка
- lLastRow = Worksheets(CStr(i)).UsedRange.Row + Worksheets(CStr(i)).UsedRange.Rows.Count - 1
- ' Обходим строки листа
- For k = 1 To lLastRow
- 'arrRep(i, k) = ActiveWorkbook.Worksheets("Досье").Cell("C3").Value
- Dim U_name
- U_name = ActiveWorkbook.Worksheets(CStr(i)).Cells(k, 1).Value
- ' Если ФИО совпало
- If U_name = User Then
- Dim ii
- ii = i - 1
- For f = 0 To 9
- Dim ff
- ff = f + 2
- ' Пишем сразу на лист
- Dim i2, f2
- i2 = i + 2
- f20 = f + 6
- ActiveWorkbook.Worksheets("Досье").Cells(f20, i2) = ActiveWorkbook.Worksheets(CStr(i)).Cells(k, ff).Value
- Next
- End If
- Next
- Next
- End Sub
Решение задачи: «Зависает макрос наглухо»
textual
Листинг программы
- 'Ускоряем Excel путём отключения всего "тормозящего"
- Public Sub AccelerateExcel()
- 'Больше не обновляем страницы после каждого действия
- Application.ScreenUpdating = False
- 'Расчёты переводим в ручной режим
- Application.Calculation = xlCalculationManual
- 'Отключаем события
- Application.EnableEvents = False
- 'Не отображаем границы ячеек
- If Workbooks.Count Then
- ActiveWorkbook.ActiveSheet.DisplayPageBreaks = False
- End If
- 'Отключаем статусную строку
- Application.DisplayStatusBar = False
- 'Отключаем сообщения Excel
- Application.DisplayAlerts = False
- End Sub
- 'Включаем всё то что выключили процедурой AccelerateExcel
- Public Sub disAccelerateExcel()
- 'Включаем обновление экрана после каждого события
- Application.ScreenUpdating = True
- 'Расчёты формул - снова в автоматическом режиме
- Application.Calculation = xlCalculationAutomatic
- 'Включаем события
- Application.EnableEvents = True
- 'Показываем границы ячеек
- ' If Workbooks.Count Then
- ' ActiveWorkbook.ActiveSheet.DisplayPageBreaks = True
- ' End If
- 'Возвращаем статусную строку
- Application.DisplayStatusBar = True
- 'Разрешаем сообшения Excel
- Application.DisplayAlerts = True
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д