< návrat zpět

MS Excel


Téma: IF ve VBA se složenou podmínkou AND, OR rss

Zaslal/a 14.8.2012 14:04

Ahoj, jenom drobnost. U rozhodování IF se prý může použít složená podmínka s OR nebo AND.
Ale když to zkusím, stále hází chyby, asi mám špatný zápis. Poraďte někdo prosím. Excel 2007, 2010

Příloha: zip9230_test_if.zip (16kB, staženo 42x)
stop Uzamčeno - nelze přidávat nové příspěvky.

icon #009231
Poki
co tohle.
If bunka.Value <> "-" And Len(bunka.Value) <> 0 Then
bunka.AddComment
bunka.Comment.Visible = False
bunka.Comment.Text Text:="KOMENTÁŘ"
End If
citovat
#009233
avatar
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?citovat
icon #009234
Poki
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)citovat
#009238
avatar
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.citovat
#009241
avatar
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@citovat
icon #009242
Poki
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
citovat
#009243
avatar
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.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje