2013 - [решено] Exel 2013 - вставить примечание макросом

Аватара пользователя
Maestro

2013 - [решено] Exel 2013 - вставить примечание макросом

Сообщение Maestro »

Всем привет

Можно ли вставить Конкретное примечание макросом в ТЕКУЩУЮ ячейку?

Пробовал запись макроса, но так оно вставляется в КОНКРЕТНУЮ ячейку, а не в ТЕКУЩУЮ

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



Range("I311").AddComment

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



Спасибо
Аватара пользователя
Maestro

Re: 2013 - [решено] Exel 2013 - вставить примечание макросом

Сообщение Maestro »

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



Код:

Код: Выделить всё

ActiveCell.AddComment("Какой-то комментарий").Visible = False
Аватара пользователя
Maestro

Re: 2013 - [решено] Exel 2013 - вставить примечание макросом

Сообщение Maestro »

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

Re: 2013 - [решено] Exel 2013 - вставить примечание макросом

Сообщение Maestro »

Цитата Maestro:



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






Код:

Код: Выделить всё

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


Цитата Maestro:



и изменить размер рамки?
2013 - [решено] Exel 2013 - вставить примечание макросом






Код:

Код: Выделить всё

    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

Re: 2013 - [решено] Exel 2013 - вставить примечание макросом

Сообщение Maestro »

СУПЕР! Как хорошо много знать Изображение

Ну и для ПОЛНОГО счастья размер рамки можно подкорректировать?

Этим по идее как-то....

Selection.ShapeRange.ScaleWidth 0.73, msoFalse, msoScaleFromTopLeft
Аватара пользователя
Maestro

Re: 2013 - [решено] Exel 2013 - вставить примечание макросом

Сообщение Maestro »

СУПЕР! Как хорошо много знать Изображение

Ну и для ПОЛНОГО счастья размер рамки можно подкорректировать?

Этим по идее как-то....

Selection.ShapeRange.ScaleWidth 0.73, msoFalse, msoScaleFromTopLeft
Аватара пользователя
Maestro

Re: 2013 - [решено] Exel 2013 - вставить примечание макросом

Сообщение Maestro »

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



Скрытый текст

[spoiler]Изображение



Код:
[/spoiler]

Код: Выделить всё

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

Re: 2013 - [решено] Exel 2013 - вставить примечание макросом

Сообщение Maestro »

Цитата Maestro:



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




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



код

[spoiler]Код:
[/spoiler]

Код: Выделить всё

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
Аватара пользователя
a_axe

Re: 2013 - [решено] Exel 2013 - вставить примечание макросом

Сообщение a_axe »

Цитата Maestro:



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




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




Цитата a_axe:



например - кодом наподобие такого
2013 - [решено] Exel 2013 - вставить примечание макросом




Ленитесь Изображение?
Аватара пользователя
Iska

Re: 2013 - [решено] Exel 2013 - вставить примечание макросом

Сообщение Iska »

Цитата Iska:



Ленитесь ?
2013 - [решено] Exel 2013 - вставить примечание макросом




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



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

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



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



Код

[spoiler]Код:
[/spoiler]

Код: Выделить всё

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
Ответить

Вернуться в «Microsoft Office (Word, Excel, Outlook и т.д.)»