Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   [решено] Exel 2013 - вставить примечание макросом (http://forum.oszone.net/showthread.php?t=322336)

Maestro 05-01-2017 11:37 2700877

Exel 2013 - вставить примечание макросом
 
Всем привет
Можно ли вставить Конкретное примечание макросом в ТЕКУЩУЮ ячейку?
Пробовал запись макроса, но так оно вставляется в КОНКРЕТНУЮ ячейку, а не в ТЕКУЩУЮ
Было бы неплохо еще и форматировать сразу это примечание - шрифт, к примеру, увеличить и жирность добавить

Range("I311").AddComment
Range("I311").Comment.Visible = False

Спасибо

Iska 05-01-2017 12:00 2700880

Maestro, достаточно заменить указание на конкретный диапазон ссылкой на активную ячейку и воспользоваться тем фактом, что метод .AddComment возвращает созданный объект Comment:
Код:

ActiveCell.AddComment("Какой-то комментарий").Visible = False

Maestro 05-01-2017 12:09 2700884

Отлично, а можно форматировать само примечание и изменить размер рамки?

Iska 05-01-2017 12:14 2700887

Цитата:

Цитата Maestro
Было бы неплохо еще и форматировать сразу это примечание - шрифт, к примеру, увеличить и жирность добавить »

Код:

    With ActiveCell.AddComment("Какой-то комментарий")
        .Visible = False
       
        With .Shape.TextFrame.Characters.Font
            .Bold = True
            .Size = 14
            .ColorIndex = 8
        End With
    End With

Цитата:

Цитата Maestro
и изменить размер рамки? »

Код:

    With ActiveCell.AddComment("Какой-то комментарий")
        .Visible = False
       
        With .Shape.TextFrame
            .AutoSize = True
           
            With .Characters.Font
                .Bold = True
                .Size = 14
                .ColorIndex = 8
            End With
        End With
    End With


Maestro 05-01-2017 12:21 2700891

СУПЕР! Как хорошо много знать :yahoo:
Ну и для ПОЛНОГО счастья размер рамки можно подкорректировать?
Этим по идее как-то....
Selection.ShapeRange.ScaleWidth 0.73, msoFalse, msoScaleFromTopLeft

Iska 05-01-2017 13:30 2700915

Maestro, вот Вам более полный демонстрационный образец:
Скрытый текст

Код:

Option Explicit

Sub Sample()
    Dim objComment As Comment
   
   
    With ActiveCell
        If .Comment Is Nothing Then
            Set objComment = .AddComment
        Else
            Set objComment = .Comment
        End If
    End With
   
    With objComment
        '.Visible = False
        .Visible = True
       
        With .Shape
            .Height = 100
            .Width = 200
           
            With .TextFrame
                With .Characters
                    .Text = "Мама мыла раму." & vbLf & vbLf
                       
                    With .Font
                        .Bold = True
                        .Size = 14
                        .ColorIndex = 3
                    End With
                End With
                   
                With .Characters(Len(.Characters.Text) + 1)
                    .Text = "Рабы не мы, "
                   
                    With .Font
                        .Bold = False
                        .Size = 12
                        .ColorIndex = 4
                    End With
                End With
               
                With .Characters(Len(.Characters.Text) + 1)
                    .Text = "Мы не рабы."
                   
                    With .Font
                        .Bold = False
                        .Italic = True
                        .Size = 10
                        .ColorIndex = 5
                    End With
                End With
            End With
        End With
    End With
   
    Set objComment = Nothing
End Sub


Maestro 12-01-2017 11:25 2702854

в дополнение: как макросом к текстовому содержимому ячейки добавить в уонец определенные символы и всю ячейку потом отформатировать шрифтом и цветом?

Спасибо

a_axe 12-01-2017 13:39 2702894

Цитата:

Цитата Maestro
как макросом к текстовому содержимому ячейки добавить в уонец определенные символы и всю ячейку потом отформатировать шрифтом и цветом? »

например - кодом наподобие такого (необходимо выделить все нужные вам ячейки, не обязательно смежные, и запустить код):
код
Код:

Public Sub Add_text_sel()
    Dim rngCell As Range, strTxt As String, intCol As Integer
    Dim colobj
    strTxt = " Пример текста":  'Текст, который необходимо вставить в ячейку
    intCol = 5:  'цвет рамки ячейки
    colobj = RGB(255, 0, 0):  'цвет заливки ячейки
    For Each rngCell In Selection.Cells
        With rngCell
            .Value = .Value & strTxt
            .Font.Color = RGB(0, 255, 0):  'цвет текста в ячейке
            .Font.Bold = True:  'Полужирное начертание, если не нужен - значение false
            .Font.Underline = xlUnderlineStyleSingle:  'Подчеркнутый, если не нужен = xlUnderlineStyleNone
            .Font.Italic = True:  'курсив , если не нужен - значение false
        End With
        With rngCell.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = colobj
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        With rngCell.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .ColorIndex = intCol
            .TintAndShade = 0
            .Weight = xlMedium
        End With
        With rngCell.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .ColorIndex = intCol
            .TintAndShade = 0
            .Weight = xlMedium
        End With
        With rngCell.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .ColorIndex = intCol
            .TintAndShade = 0
            .Weight = xlMedium
        End With
        With rngCell.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .ColorIndex = intCol
            .TintAndShade = 0
            .Weight = xlMedium
        End With
    Next
End Sub


Iska 13-01-2017 05:54 2703147

Цитата:

Цитата Maestro
в дополнение: как макросом к текстовому содержимому ячейки добавить в уонец определенные символы и всю ячейку потом отформатировать шрифтом и цветом? »

Не надо «в дополнение». Надо — в отдельную тему.

Цитата:

Цитата a_axe
например - кодом наподобие такого »

Ленитесь ;)?

a_axe 13-01-2017 15:36 2703269

Цитата:

Цитата Iska
Ленитесь ? »

Если бы :). Лень - двигатель прогресса, а глядя на {большое} количество строчек в коде, кажется, что я в ударники записался. Исправляюсь (впрочем, если существует более оптимальный подход, подскажите ;) ):


Maestro, в экселе есть инструмент "стиль ячейки", в вашем случае более удобно будет использовать его (вкладка "Главная"->сектор "стили"-> кнопка "Стили ячеек").
В выпадающем меню можно создать свой стиль ячейки, либо воспользоваться стандартными (в коде ниже использован стандартный стиль Excel 2010 "Хороший", если создадите свой стиль - измените название стиля в коде).

Код ниже добавит ваш текст и присвоит вашим ячейкам указанный стиль "Хороший", соответственно преимущество будет в том, что оформление ячеек можно быстро изменить, поменяв один раз настройки в стиле, да и настраивать стиль будет гораздо удобнее в смысле визуального отображения, нежели вписывать параметры в код. В принципе - для разного вставляемого текста можно сделать несколько копий кода, и "повесить" их на разные кнопки (стилей нужно также несколько).
Код
Код:

Public Sub Add_text_style()
    Dim rngCell As Range, strTxt As String
   
    strTxt = " Пример текста":  'Текст, который необходимо вставить в ячейку
    Selection.Style = "Хороший"
    For Each rngCell In Selection.Cells
        rngCell.Value = rngCell.Value & strTxt
    Next
End Sub


Iska 14-01-2017 05:42 2703451

a_axe, я имел в виду, что полученный макрорекордером код просто стоило чуть получше «причесать».

a_axe 14-01-2017 09:40 2703469

Это да. Тут еще момент, что из такого кода TS легче выкинуть ненужные куски при необходимости ;)


Время: 22:34.

Время: 22:34.
© OSzone.net 2001-