Poki(14.8.2012 14:17)#009231
co tohle.
If bunka.Value <> "-" And Len(bunka.Value) <> 0 Then
bunka.AddComment
bunka.Comment.Visible = False
bunka.Comment.Text Text:="KOMENTÁŘ"
End If
Dingo(14.8.2012 15:25)#009233 
Ano, tohle funguje!! Díky. To je skvělá finta. Dokonce tu logiku i chápu :). Já zas nebyl tak daleko se svým zápisem, jak koukám, ale přivítal bych vysvětlení, proč to s tou prázdnou hodnotou nefunguje.
Můžu mít ještě otázku? Když chci přizpůsobit velikost komentáře, umím to jedině někde okoukaným zápisem:
bunka.Comment.Text Text:="KOMENTAR"
Set cmt = bunka.Comment
With cmt.Shape
.ScaleWidth 3.5, msoFalse, msoScaleFromTopLeft
End With
Nešlo by to napsat jednodušeji, jen pro tu šířku, něco jako
bunka.Comment.Shape.ScaleWidth ... atd ? Mě se to nepovedlo, ale nevím....
A k fóru: jak dostanu kód do zeleného pole?
Poki(14.8.2012 15:58)#009234
Uf, to je hodne otazek, ale zkusim to:
Vase podminky IF:
1) If bunka.Value <> ("-" Or "") -> tohle je proste uplne spatny zapis
2) If bunka.Value <> "-" Or bunka.Value <> "" - tohle by fungovalo, ale mate tam OR (logicky to pak nemuze vyjit - musi tam byt AND)
3) If bunka <> "-" Or bunka <> "" - tohle by fungovalo, ale mate tam OR (logicky to pak nemuze vyjit - musi tam byt AND)
Upravit velikost komentare lze:
bunka.Comment.Shape.TextFrame.AutoSize = True
Zelene pole kodu
dostanete tak, ze kod vlozite mezi znacky (code) ...tady bude kod...(code) (v hranatych zavorkach [] - kliknutim na znacku dolaru $ v editoru se vam znacky zobrazi)
Dingo(15.8.2012 9:46)#009238 
Díky za trpělivost. Už vím co bylo špatně. S tím AND mi to fakt funguje, chvíli jsem kroutil hlavou, ale už je mi to jasné.
Autosize u komentáře vlastně znám, jen mě to nenapadlo použít ve vba.
Ještě se chci zeptat, potřebuju komentář smazat předtím, než v buňce založím nový, při dalším spuštění makra je jinak chyba. A celé tohle mám jako součást větší akce, kde obsah komentáře hledám jinde přes VLookUp a je pokaždé jiný. Ale když dám před AddComment řádek
bunka.Comment.Delete při prvním spuštění hodí chybu "Object variable or With block variable not set". Jak ale jednou makro projde, a řádek doplním později, už funguje. Bude tam asi chybět nějaké Dim, nebo jiná věc.
Jak byste komentář smazal Vy? Dík.
Jeza(15.8.2012 10:50)#009241 
Určitě půjde smazat i jako objekt komentáře, ale jinak komentář jako takový zmizí i při použití
bunka.NoteText ""
třeba postačí.
M@
Poki(15.8.2012 11:42)#009242
no, Jestli je cilem opravdu smazat a pak pridat komentare, udelal bych to asi takto:
Dim Oblast As Range
Set Oblast = Range("C1:F2")
'odstraneni vsech komentaru z Oblasti
Oblast.ClearComments
'Vlozeni komentaru
For Each BUNKA In Oblast
If BUNKA.Value <> "-" And Len(BUNKA.Value) <> 0 Then
BUNKA.AddComment
BUNKA.Comment.Visible = False
BUNKA.Comment.Text Text:="Adresa Buňky: " & BUNKA.Address & vbNewLine & "Čas: " & Now
End If
Next BUNKA
Dingo(15.8.2012 12:46)#009243 
Fajn, to od Jezy vyzkoušeno, funguje.
Poki, ty nejjednodušší věci člověka často nenapadnou. Taky jsem si myslel, že tím SET se mi označí oblast v listu, ale ona to vlastně není aktivace, takže to taky funguje jsem chtěl.
Překvapilo mě vbNewLine u komentáře, já používal "nahrané" Chr(10).
Ale celé makro už mám v kupě a funguje, je radost sledovat, jak se mi doplňují komentáře v oblasti 250ř./40sl. - hlavně při menší lupě.
Děkuji za pomoc a tohle téma může asi někdo zamknout.