Использование макроса для скрытия строк без нарушения формул / функций - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть лист, который я использую, чтобы назначать задачи определенным отделам в бизнесе.Каждый отдел охватывает столбцы от A до Y и имеет длину 40 строк, причем первый отдел имеет диапазон A6: Y46.На листе 15 различных отделов, последний из которых заканчивается строкой 619.

Я пытаюсь создать макрос, который скрывает все строки, в которых столбец B пуст (поскольку в столбце A всегда что-то есть).Тем не менее, на листе также есть множество формул и функций, вычисляющих вещи, и они продолжают «ломаться».

Я записал макрос, в котором отфильтровал, а затем скрыл все пустые ячейки.Это сработало отлично, как я это делал.Но когда я выполнил макрос, чтобы повторить его, все формулы и функции были ошибочными.Ни одна из строк, которые я скрываю, на самом деле не содержит данных, используемых в функциях, но функции выполняют цикл по всем ячейкам, чтобы проверить их значение.Поэтому они как бы обособлены от функций.

Кто-нибудь знает, как мне этого добиться?

1 Ответ

0 голосов
/ 05 февраля 2019

Как насчет создания формул в макросе, который вы используете, чтобы скрыть эти строки?Это гарантирует, что формулы не сойдут с ячеек, на которые они ссылаются, поскольку вы создаете эти ссылки каждый раз, когда ПОСЛЕ скрытия строк.

Один из способов сделать это - сначала очистить ячейкисодержимое, чтобы избежать проблем с перезаписью существующих данных, а затем заполнить их формулами

With Workbooks("REFERENCE").Sheets("REFERENCE")
    'Code to hide rows

    .Range("B1:B35").ClearContents
    .Range("B1:B35").Formula = "=IF($A$1>B1,B1-B2,"FALSE")" 'example
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...