Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: VBA. Excel. Коментарии Добавлено: 15.01.08 10:45  

Автор вопроса:  Mikle
При работе с комментариями возникли следующие проблемы:
1) Не удается откорректировать само поле комментариев (по длине и ширине).
2) После создания комментариев, а затем последующего сжатия/ расширения строк/ столбцов в данном листе – сами комментарии могут переместиться невесть куда, к тому же поле комментария может невесть как измениться (видимо "Глюк" в Excel).
Если кто сталкивался с такими проблемами, и находил решения, прошу откликнуться.

Ответить

  Ответы Всего ответов: 13  

Номер ответа: 1
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #1
Добавлено: 15.01.08 11:29
С подобными проблемами сталкивался. Я бы отнёс такое поведение комментариев не к глюкам, а к объяснимому поведению комментариев, как и других встраиваемых объектов. Если делать руками, то в созданном комментарии делаешь правку, затем правый клик на границе комментария, выбираешь "Формат примечания..." и внимательно смотришь, что для примечания можно настроить (включая размер и привязку объекта к фону). То же самое ты можешь повторить, сделав макрос на VBA. Пиши макросы или исследуй объектную модель Excel.

Ответить

Номер ответа: 2
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #2
Добавлено: 15.01.08 11:39
На мой взгляд, было бы гораздо удобней, если бы по умолчанию все новые комментарии создавались бы с параметром Формат примечания - Свойства - Привязка объекта к фону - перемещать, но не изменять размеры. По умолчанию же у всех стоит не перемещать и не изменять размеры, отсюда и глюк с пропажей примечаний, особенно когда примечание прячется в случае скрытия строк/столбцов.

Ответить

Номер ответа: 3
Автор ответа:
 Pavel



Вопросов: 0
Ответов: 36
 Профиль | | #3 Добавлено: 15.01.08 14:53
Sub Размер_Комментарий()
Dim iComment As Comment
    For Each iComment In ActiveSheet.Comments
        iComment.Shape.TextFrame.AutoSize = True
        iComment.Shape.Height = iComment.Shape.Height + 10
        iComment.Shape.Width = iComment.Shape.Width + 15
    Next iComment
    MsgBox "Размеры комментарий исправлены!", vbInformation, "Комментарии"
End Sub

Ответить

Номер ответа: 4
Автор ответа:
 Pavel



Вопросов: 0
Ответов: 36
 Профиль | | #4 Добавлено: 15.01.08 14:55
А так же для общего развития

'1) изменяем размер окошка всех примечаний на листе ровно под текст (AutoSize)
Sub All_Comments_Size_Change()
Dim iComment As Comment
    For Each iComment In ActiveSheet.Comments
        iComment.Shape.TextFrame.AutoSize = True
    Next iComment
End Sub


'2) добавляем комментарий в ячейку и меняем его шрифт
Sub ChangeFontInComment()
    With Range("B2";)
        .ClearComments
        .AddComment
        .Comment.Text "бла-бла-бла"
        With .Comment.Shape.TextFrame.Characters.Font
            .Name = "Times New Roman"
            .Size = 14
            .Bold = True
        End With
    End With
End Sub


'3) меняем шрифт у всех комментариев
Sub All_Comments_Font_Change()
Dim iComment As Comment
    For Each iComment In ActiveSheet.Comments
       With iComment.Shape.TextFrame.Characters.Font
            .Name = "Times New Roman"
            .Size = 14
            .Bold = True
        End With
    Next iComment
End Sub


'4) устанавливаем высоту и ширину окна примечания
Sub Change_Size_Comment_Window()
    With Range("A1";)
        .AddComment "Bla-bla-bla"
        With .Comment.Shape
            .Width = 100
            .Height = 200
            .Visible = True
        End With
    End With
End Sub

Ответить

Номер ответа: 5
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #5
Добавлено: 16.01.08 08:15
Вот и пример тебе Pavel привёл. Наслаждайся комментариями :)

Ответить

Номер ответа: 6
Автор ответа:
 MMikle



Вопросов: 0
Ответов: 4
 Профиль | | #6 Добавлено: 19.01.08 14:38
Извиняюсь за измененный логин (работаю с другого ПК, а администраторы не помогли подключиться, приятные сны смотрят, наверное).
Большое спасибо mc-black, Pavel!
Ваши ответы на 90% развеяли мои проблемы:
'1) изменяем размер окошка всех примечаний на листе ровно под текст (AutoSize)
Sub All_Comments_Size_Change()
Dim iComment As Comment
    For Each iComment In ActiveSheet.Comments
        iComment.Shape.TextFrame.AutoSize = True
    Next iComment
End Sub
Отлично работает!
Остаются вопросы:
1) Как запрограммировать свойство привязки комментария к ячейке (Формат примечания/ Свойства/ «Перемещать, но не изменять размер»)?
2) А возможно ли «ручками» задать все эти свойства («Автоматический размер» и «Перемещать, но не изменять размеров») для всех примечаний одновременно (не переберая их)?
Зараннее благодарен.

Ответить

Номер ответа: 7
Автор ответа:
 Pavel



Вопросов: 0
Ответов: 36
 Профиль | | #7 Добавлено: 19.01.08 18:29
Попробуйте так

Sub AutoSizeMoveDontChangeSizeComments()
'устанавливаем размер окна комментария AutoSize и меняем свойство окно на "Перемещать, но не именять размеры"
'Свойство XlPlacement объекта Shape может быть одним из этих констант (Формат примечания/Свойства/)
'- xlFreeFloating - не перемещать и не изменять размеры
'- xlMove - перемещать, но не именять размеры
'- xlMoveAndSize - перемещать и изменять объект вместе с ячейками
Dim iComment As Comment
    For Each iComment In ActiveSheet.Comments
        With iComment.Shape
            .TextFrame.AutoSize = True
            .Placement = xlMove 'перемещать, но не именять размеры
        End With
    Next iComment
    MsgBox "Все комментарии обработаны!", 64, "Конец"
End Sub


P.S. с Вами я профессионалом по комментариям стану)) Сам сижу и разбираюсь, что как делать)

Ответить

Номер ответа: 8
Автор ответа:
 Pavel



Вопросов: 0
Ответов: 36
 Профиль | | #8 Добавлено: 19.01.08 18:37
По поводу вашего второго вопроса, я думаю, что "ручками" нельзя.
Как вы знаете можно выделить все примечания на листе Правка - Перейти... - Выделить... - Примечания - ОК, но когда вы захотите изменить примечания, то выделение со всех примечаний сразу снимется и будет активно лишь одно примечание.

Ответить

Номер ответа: 9
Автор ответа:
 MMikle



Вопросов: 0
Ответов: 4
 Профиль | | #9 Добавлено: 19.01.08 18:52
Павел!
Очень большое спасибо!
Попробовал Ваш пример отлично работает.
Пожалуйста не обессудте за трудозатраты, я бы во век не додумался.
       С товарищеским приветом Михаил.

Ответить

Номер ответа: 10
Автор ответа:
 Pavel



Вопросов: 0
Ответов: 36
 Профиль | | #10 Добавлено: 19.01.08 19:56
Да я только "ЗА" )
Рад, что помог )

Ответить

Номер ответа: 11
Автор ответа:
 Student



Вопросов: 2
Ответов: 8
 Профиль | | #11 Добавлено: 20.01.08 02:28
Sub kom()
With Range("A1";)
        .ClearComments
        .AddComment
        With .Comment.Shape
          .Visible = False
           End With
            With .Comment.Shape.Fill
          .UserPicture _
        "C:\Documents and Settings\Dmitriy\My Documents\My Pictures\kinopoisk.ru-Ze-film-196190.jpeg"
                End With
        
    End With

End Sub

Подскажите, пожалуйста, какую строку необходимо вставить, чтобы размер окана примечания зависел от размера картинки? То есть (Autosize)

Ответить

Номер ответа: 12
Автор ответа:
 MMikle



Вопросов: 0
Ответов: 4
 Профиль | | #12 Добавлено: 20.01.08 12:43
Павел.
В работе с комментариями, дошел до необходимости раскраски его части (строки), и тут чуть было не «стопорнулся», но творчески переработал передовой опыт, и пожалуйста:

'2) добавляем комментарий в ячейку и меняем его шрифт
' + раскраска части коментария (2й строки)
Sub ChangeFontInComment()
    With Range("B2";)
        .ClearComments
        .AddComment
        .Comment.Text "Бла-" & Chr(10) & "бла-" & Chr(10) & "бла"
        With .Comment.Shape.TextFrame.Characters.Font
            .Name = "Times New Roman"
            .Size = 12
            .Bold = False
        End With
        With .Comment.Shape.TextFrame.Characters(Start:=6, Length:=4).Font
            .Size = 14
            .Name = "Arial Cyr"
            .Bold = True
            .ColorIndex = 3
        End With
    End With
End Sub

Так что, еще раз спасибо.

Ответить

Номер ответа: 13
Автор ответа:
 Student



Вопросов: 2
Ответов: 8
 Профиль | | #13 Добавлено: 20.01.08 23:30
Подскжите, пожалуйста, ответ на мой вопрос. См. выше.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам