Redesign starých komentářů v sešitu

Redesign starých komentářů je zapotřebí v případě, že se vám dostal do ruky sešit s větším množstvím původních komentářů. O štábní kultuře nelze mluvit, jejich podoba se nezměnila za téměř dvacet let. Komentáře si žijí ve svém vlastním světě s původní barevnou paletou, stále jsou schopny se vykreslovat mimo viditelnou oblast, nedrží na místě návrhu, a nechají se překrýt příčkami. Navíc podle mého názoru otravně vkládají do tvaru komentáře jméno autora.

Komentář v Excelu 2016
Komentář v Excelu 2016

Alespoň s něčím si dnes poradíme. Stejně jako jsme se dříve pustili do Efektivního přebarvení oblasti buněk, budeme programově měnit podobu stávajících komentářů.

Původní komentáře (Excel 2003)
Původní komentáře (Excel 2003)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Sub TestRedesignKomentaru()

    Call RedesignKomentaru1(True, True)
   
End Sub

Sub RedesignKomentaru1(Optional bOdstranitJmeno As Boolean = True, Optional _
    bStin As Boolean = False)

    Dim cKomentar As Comment

    Application.ScreenUpdating = False

    'pro každý komentář na listu
    For Each cKomentar In ActiveSheet.Comments
        With cKomentar.Shape
            .AutoShapeType = msoShapeFlowchartDocument
            '(bílá) barva šipky
            '.Line.ForeColor.RGB = RGB(255, 255, 255)
            'barva šipky podle pozadí buňky vpravo
            .Line.ForeColor.RGB = cKomentar.Parent.Offset(0, 1).Interior.Color
            'skrytí obrysu
            .Line.Visible = msoFalse
            'barva pozadí (šedý přechod)
            .Fill.ForeColor.SchemeColor = 9
            .Fill.OneColorGradient msoGradientHorizontal, 1, 0.43
            'odstranit jméno z komentářů
            If bOdstranitJmeno Then
                strUzivatel = Application.UserName & ":" & Chr(10)
                strText = cKomentar.Text
                iDelka = Len(strUzivatel)
                If Left(strText, iDelka) = strUzivatel Then
                    .TextFrame.Characters(1, iDelka).Delete
                End If
            End If
            .TextFrame.Characters.Font.Name = "Calibri"
            .TextFrame.Characters.Font.Size = 11
            '(šedá) barva písma
            .TextFrame.Characters.Font.ColorIndex = 16
            'vzdálenost textu od okrajů
            .TextFrame.AutoMargins = False
            .TextFrame.MarginTop = 5
            .TextFrame.MarginBottom = 5
            .TextFrame.MarginLeft = 5
            .TextFrame.MarginRight = 5
            'automatická velikost tvaru
            '.TextFrame.AutoSize = True
            'stín
            If bStin Then
                .Shadow.Type = msoShadow6
                .Shadow.ForeColor.SchemeColor = 55
                .Shadow.Visible = msoTrue
                .Shadow.OffsetX = 4
                .Shadow.OffsetY = 4
            Else
                'beze stínu
                .Shadow.Visible = msoFalse
            End If
        End With
    Next

    Application.ScreenUpdating = True

End Sub
Redesign komentářů 1
Redesign komentářů 1

Procedura zpracovává dva volitelné parametry. První určuje, zda-li se chceme zbavit jména v komentáři, druhá, jestli si přejeme zobrazit stín tvaru. Osobně nemám rád ani kostrbatou vodicí čáru se šipkou u tvaru. U toho zvoleného se vykresluje napravo od buňky a snažím se ji skrývat (volím stejnou barvu, jako má buňka pod ní). Zbytek kódu už není tak zábavný, i když jeho tvorba nebyla úplně jednoduchá, protože Záznamník maker se ke komentářům příliš nemá.

V příloze naleznete ještě jeden styl komentářů, a to v proceduře RedesignKomentaru2.

Redesign komentářů 2
Redesign komentářů 2

Někdy příště si ukážeme, jak vytvářet komentáře ve vlastní režii.

Příloha
redesign_komentaru.zip