Přeskočit navigaci | Přeskočit na novinky
     

Jste zde: Úvodní stránka » excel » vba-listy-bunky » excel-vba-komentare-moznosti

Jak na komentáře - Excel VBA

Videokurzy Excel

Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:

Co vše lze provádět s komentářem v MS Excelu za využití VBA.

Doplněno: 26.7.2014

Úvodem do komentářů - VBA Excel

Microsoft Excel logo

S komentáři ve VBA jdou vytvářet zajímavé věci. V tomto článku je popsáno co, lze s komentářem provádět, včetně příslušných kódu. Včetně sešitu ke stažení pro vaše další pokusy. Pro přehlednost je článek rozdělen an kapitoly:


Proč komentáře?

Ač se to nezdá je to velice dobrá pomůcka. Osobně využívám nejen k rozšíření nápovědy. Takto mohu jednoduše napovědět uživateli, proč a co má do buňky zadávat. Po čase zjistíte, že informace v komentářích pomohou i vám, když se po roce vrátíte k vámi vytvořenému sešitu, tak ihned víte co bylo vzorcem v dané buňce myšleno (nemusíte si uchovávat v paměti několik desítek šablon a výpočtu, proč a co konktétním výpočtem bylo myšleno, málokdo má paměť jako slon).

Bohužel v praxi jsou poznámky málo využívany, přitom ve spojení s VBA mají všestrané využití. Praktické použití komentářů ve spojení s VBA je popsáno v tomto článku.

Obsahuje buňka komentář

Nejprve zjistíme zda buňka obsahuje komentář

If ActiveCell.Comment Is Nothing Then MsgBox "Nebsahuje komentář." Else komentarVBunce = ActiveCell.Comment.Text MsgBox "Obsahuje komentář." & komentarVBunce End If

Případně tento komentář vypíšeme do dialogového okna.

If ActiveCell.Comment Is Nothing Then MsgBox "... Bez komentáře ..." Else komentarVBunce = ActiveCell.Comment.Text MsgBox "Obsahuje komentář:" & komentarVBunce End If

Vložit komentář do buňky

Jeden z nejčastějších úkolu.

Vložit komentář z dialogového okna

Požadovaný text, který chceme do komentáře, zadáme v zobrazeném dialogovém okně.

If ActiveCell.Comment Is Nothing Then novycmnt = InputBox("Vlož nový komentář:", , cmnt) ActiveCell.AddComment Text:=novycmnt Else cmnt = ActiveCell.Comment.Text novycmnt = InputBox("Přepis původní komentář", , cmnt) ActiveCell.Comment.Text Text:=novycmnt End If

Zkopírujeme do komentáře text z buňky

Vhodné například, když potřebuji ukázat jak vypadáý vzorec v buňce.

If ActiveCell.Comment Is Nothing Then ActiveCell.AddComment.Text Text:=ActiveCell.FormulaLocal End If

Smazat komentář

Celý komentář

Jak odstranit komentář.

ActiveCell.Comment.Delete

Text v komentáři

Potřebujeme-li smazat text v komentáří, ale komentář ponechat:

If ActiveCell.Comment Is Nothing Then Else ActiveCell.Comment.Text Text:=" " End If

Zobrazit/skrýt komentář

Jak pomocí VBa kódu skrývat a zobrazovat komentáře:

Range("E6").Comment.Visible = True

nebo pro všechny

For Each c In ActiveSheet.Comments c.Visible = False Next

Upravit komentář

Formát textu

Vložit a upravit komentář (barva, velikost, font). Vloží text a nastaví formát fontu.

Dim cmt As Comment Set cmt = ActiveCell.Comment If cmt Is Nothing Then ActiveCell.AddComment Text:="dddd" Set cmt = ActiveCell.Comment With cmt.Shape.TextFrame.Characters.Font .Name = "Times New Roman" .Size = 15 .Bold = False .ColorIndex = 0 End With End If

Upravit již hotový komentář

If ActiveCell.Comment Is Nothing Then Else With ActiveCell.Comment.Shape.TextFrame.Characters.Font .Name = "Times New Roman" .Size = 15 .Bold = True .ColorIndex = 3 End With End If

Tvar komentáře

Místo obdelníku bude komentář vypadat jako hvězdička

If ActiveCell.Comment Is Nothing Then Else With ActiveCell.Comment.Shape .AutoShapeType = msoShape32pointStar .Line.Visible = msoFalse End With End If

Pozadí komentáře

Přidání stínu pro komentář

If ActiveCell.Comment Is Nothing Then Else With ActiveCell.Comment.Shape .Shadow.Type = msoShadow7 .Shadow.ForeColor.SchemeColor = 55 .Shadow.Visible = msoTrue .Shadow.OffsetX = 2 .Shadow.OffsetY = 2 End With End If

Další možné efekty

V přípravě...

Změnit umístění komentáře

Potřebujemeli komentář posunout. Opět za využití VBA.

ActiveCell.Comment.Shape.Top = ActiveCell.Comment.Parent.Top + 30 ActiveCell.Comment.Shape.Left = ActiveCell.Comment.Parent.Left + 30

Poznámka: komentář musí být zobrazen. Pokud se zobrazuje automaticky posunutí pouhým najetím myši nepoznáte.

Originální pozice komentáře

ActiveCell.Comment.Shape.Top = ActiveCell.Comment.Parent.Top + 5 ActiveCell.Comment.Shape.Left = ActiveCell.Comment.Parent.Offset(0, 1).Left + 5

Změna jména

Do poznámky se již nebude psát vaše jméno (UserName, které je zadáno v systému). Co text poznámka.

Application.UserName = "Poznámka"
Microsoft Excel VBA komentáře

Ke stažení

Soubor Komentáře jak na ně v Excel VBA soubor ve formátu *.xlsm ke stažení zdarma. Soubor využívá makra (pro správnou funkci nutno povolit spouštění maker).

Ukázkové příklady, testováno Excel 2007 a Excel 2010 (česká verze) pod Windows 7.


Závěrem

Předpokládám, že jsem probral všechny základní činosti, které lze s komentářem provádět. Můžete doplnit do komentářů pod článkem.

Článek byl aktualizován: 01.11.2014 14:13

Odměna

Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.


Pavel Lasák

Pavel Lasák - autor webu

Microsoft Office (Word, Excel, PowerPoint) se věnuji od roku 2006. Své vědomosti a zkušenosti dávám k dispozici na různých školeních a konzultacích, ale také na tomto webu. K dispozici na tomto webu je mnoho návodu, tipů a triků včetně desítek různých šablon.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil

Doporučte tento článek přátelům

Pokud vám článek pomohl, případně si myslíte, že může pomoci i někomu dalšímu, budu rád když jej sdílením doporučíte přátelům - děkuji:



Komentáře


StandaK

Přidáno: 18.09.12 17:29

Dobrý den, prosím o radu: vkládám do aktivní buňky obrázek jako komentář pomocí makra, ale potřeboval bych, aby po vložení obrázku se tabulka přesunula tak, aby tato aktivní buňka byla v levém horním rohu, takže po následném najetí kurzorem na ni nebude část obrázku schován pod spodním okrajem okna. Děkuji předem za odpověď.

Pavel Lasák

Přidáno: 19.09.12 20:29

TO StandaK: Téma vkládaní obrázku do komentáře jsem našel u kolegy na http://excelplus.net/news.php?readmore=145

Luboš

Přidáno: 31.07.13 10:11

Dobrý deň! Prosím vás neviete mi poradiť ako vložit formát PDF do komentára v bunke? dakujem Luboš

Pavel Lasák

Přidáno: 29.07.14 08:17

To Luboš: Jak vkládat *.pdf do komentáře nevím. Řekl bych, že to bohužel nejde.

Honza

Přidáno: 31.10.14 09:48

Dobrý den. Mám velikou prosbu ohledně komentářů (poznámek). V buňce A1 mám počet kusů (100), který je třeba dodat zákazníkovi, do B1 zapíši počet kusů, které chci odepsat(10). A teď to zábavné :-) Po zapsání počtu do B1 potřebuji tuto hodnotu odečíst od A1 do poznámky (A1) zapsat datum a také tuto hodnotu. Následně vymazat hodnotu B1. A takto pokaždé dokud A1 nebude 0. Tak že v poznámce bude několik řádek s datumem a počtem odepsaných kusů. A to pro každý řádek. Vím je to krkolomné, zkoušel jsem to celou noc a vždy se mi zapíše jen první záznam, při druhém to hodí chybu.

Cedrom

Přidáno: 02.11.14 14:36

Dobrý deň, Potrebujem poriadiť (ak chce ochotný).Cez VBA vkladám do komentára hodnoty (text cez formuláre). Mám to na viacej riadkov oddelené prázdnymi riadkami, ale potrebujem to rozlíšiť farebne a veľkosťou písma (teda v komentári). Ide mi meniť font len celého komentára, nie je možné meniť font po riadkoch zvlášť? ĎAKUJEM za odpoveď!

Jojo

Přidáno: 03.11.14 10:22

To Honza: -- na list, kde sú umiestnené data (nie do bežného modulu), treba umiestniť tento kód:Private Sub Worksheet_Change(ByVal Target As Range) 'Do poznámky v A1 zapisuje dátum + ks vydané zákazníkovi '+ v A1 sleduje zostatok na sklade Zasoby = "A1" ' A1 -poč.hodnota Vydaj = "B1" ' B1 -odpočítavaná hodnota z A1 With Range(Zasoby) If Target.Address = Range(Vydaj).Address Then Zostatok = Range(Zasoby) - Range(Vydaj) If Zostatok < 0 Then MsgBox "Toľko sa už nedá odpísať" Else If .Comment Is Nothing Then .AddComment Text:=Now() & " / -" & Range(Vydaj).Text & "ks" & vbLf Else .Comment.Text Text:=.Comment.Text & Now() & " / -" & Range(Vydaj).Text & "ks" & vbLf End If Range(Zasoby) = Zostatok End If End If End With End Sub

Jojo

Přidáno: 04.11.14 07:33

To Honza: -- ...ospravedlňujem sa, zabudol som na požiadavku "vymazať hodnotu B1". --> Čiže za riadok: -- "Range(Zasoby) = Zostatok" -- treba ešte doplniť:Application.EnableEvents = False Range(Vydaj) = "" ' vymazať "B1" Application.EnableEvents = True

Irulan

Přidáno: 14.02.15 20:57

Potřebuji "vysypat" data z komentářů (cca 6000 buněk s komentáři), jak na to? Dík za radu.

Jojo

Přidáno: 17.02.15 09:01

To Irulan: -- neviem čo presne znamená "vysypať", ale ak sa jedná o odstránenie komentárov napr. z listu, tak:Sub Test() For Each cmt In Sheets("List1").Comments cmt.Delete Next cmt End Sub

Jakub

Přidáno: 27.02.15 12:35

Dobrý den, dokáže mi někdo poradit s vkládáním a úpravou víceřádkových komentářů? Mám formulář s 5 TextBox - co TextBox to jeden řádek komentáře. Když dám vložit komentář, tak vše proběhne v pohodě, ale když to chci poté upravit, tak se mi načte celý do jednoho TextBoxu a ne opět co řádek to Box.







Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články

25.03.2017:
ROUNDUP, ROUNDDOWN - zaokrouhlování

07.04.2017:
Řazení Excel - bug - problém

09.04.2017:
Podmínkové funkce Excel - bug - problém


Newsletter

Přihlaste se odběru novinek a získejte:
Ebook zdarma -
10 kroků ke zvládnutí (Word, Excel, PowerPoint)
Šipka Kniha 3D Více o ebooku ...

TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2017 | 14936

Tento web zatím neprošel jazykovou korekturou. Beta verze redakčního systému.