Добрый день. У меня такой вопрос: можно ли сделать так, чтобы при удалении строк примечания к ячейкам оставались на том уровне, как они были до удаления?
Прилагаю файл. Первоначальный вид примечаний показан на Листе1. После удаления строк 8-28 примечания переместились вниз (Лист1_после_удаления_строк). Нужно, чтобы они остались на прежнем уровне, то есть возле ячеек, к которым они относятся (Лист1_как_должно_быть)
перемещение примечаний при удалении строк
Модератор: Naeel Maqsudov
- Вложения
-
- примечания_2..zip
- (11.95 КБ) 36 скачиваний
Jaroslav, В свойствах примечания можно установить привязку об'екта как Перемещать, но не изменять размеры. Если эту операцию, проделывать для каждого примечания, не хочется, то можно воспользоваться нижеопубликованным макросом :
Если этот финт не прокатит (хотя в случае с удалением строк, лично мне повезло), то после удаления строк, можно выполнить следующий макрос :
P.S. Обратите внимание на то, что здесь нет подбора ширины/высоты шейпа, ибо если Вы, всё-таки установите свойство Placement как xlMove(перемещать, но не изменять размеры), то в этом не будет необходимости, т.к. размеры будут "фиксированы"
Код: Выделить всё
Private Sub SetCommentPlacement()
Dim iComment As Comment
For Each iComment In ActiveSheet.Comments
iComment.Shape.Placement = xlMove
'xlMoveAndSize - Перемещать и изменять об'ект вместе с ячейками
'xlMove - Перемещать, но не изменять размеры
'xlFreeFloating - Не перемещать и не изменять размеры
Next
End Sub
Код: Выделить всё
Private Sub SetCommentMove()
Const TopOffset! = 10 'Можно указать свои значения "смещений"
Const LeftOffset! = 10
Application.ScreenUpdating = False
Dim iComment As Comment, iCell As Range
For Each iComment In ActiveSheet.Comments
Set iCell = iComment.Parent(0, 2)
With iComment.Shape
.Top = iCell.Top + TopOffset
.Left = iCell.Left + LeftOffset
End With
Next
Application.ScreenUpdating = True
End Sub
Спасибо, pashulka. Заработал второй макрос