В процессе встраивания кода, автоматизируемый файл стал на одном из этапов выдавать сообщение error 1004 Application-defined or object-defined error Причем, пока делал части кода на маленьком файле - никаких ошибок не возникало. Как только начал объединять код в едином файле (в т.ч. нужно чтобы выполнялось два разных действия по WorksheetChange - об этом позже), ошибки пошли более-менее серийно. И вновь, как только подготовил небольшой файл примера, два срабатывания из трех код начал отрабатывать без error 1004.
Цель: автоматизировать реестр на 10000 записей Порядок срабатывания кода: 1. WorkbookOpen - прописание ключевых формул и перекрытие значков примечаний белыми треугольниками 2. WorksheetChange - расширенный фильтр реестра по критерию в единственной ячейке, сохранение истории изменения ячеек (в ст. 1, 42, 49), вставка дат в соседние ячейки 3. WorkbookBeforeSave - удаление треугольников, скрывающих индикаторы примечаний (в большом рабочем файле идет вывод ошибки 1004)
Также, довольно долго для WorksheetChange объединял расширенный автофильтр и сохранение истории в примечания - буду благодарен, если порекомендуете любую оптимизацию кода
Код
Private Sub
Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Update 20141110 Sub RemoveIndicatorShapes()
'Dim pWs As Worksheet
'Dim pShape As Shape
Dim pWs As Worksheet
Dim pComment As Comment
Dim pRng As Range
Dim pShape As Shape
Set pWs = Application.ActiveSheet
For Each pShape In pWs.Shapes
If Not pShape.TopLeftCell.Comment Is Nothing Then 'в этой строке дебаг дает желтую подсветку
If pShape.AutoShapeType = msoShapeRightTriangle Then
pShape.Delete
End If
End If
Next