EXCEL Makro
Dobrý den, potřebuji vytvořit makro, které najde buňku s určitým obsahem a pak v celém sloupci označí buňky, které mají více znaků, než 50, vytvořil jsem tohle:
Sub Specifikace()
'
' Specifikace Makro
' Vyhledá sloupec specifikace popisu a označí buňky obsahující více než 50 znaků
'
' Klávesová zkratka: Ctrl+Shift+S
'
Cells.Find(What:="PARAMETER_5131", After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Range(Selection, Selection.End(xlDown)).Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=DÉLKA()> 50"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub
Někde zde je ovšem chyba, nevím, jak přesně formulovat tohle, když sloupec bude pokaždé jiný:
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=DÉLKA()> 50"
Děkuji za rady
upravil jsem formátování kódu, aby se to dalo číst. (touchwood)
VBA teda moc nepěstuju, ale řekl bych, že si pleteš funkce Excelu a VBA.
Délku stringu ve VBA zjistíš funkcí Len()
https://www.wallstreetmojo.com/vba-len/
No nějak to nejsem schopen dát dohromady ani tak, ale děkuji za snahu. Dokáže někdo něco jdnoduchého vytvořit? Najít buňku s obsahem PARAMETER_5131 a ve sloupci, kde se nachází označit všechny buňky, které mají více než 50 znaků? Moc děkuji
Přilož nějaký vzorový sešit ať je vidět struktura dat. Taky by neškodil lepší popis funkce, parametr se hledá na určitém řádku nebo v nějaké oblasti? Nechceš doufám prohledávat všechny buňky na listu? Parametr je pevně daný nebo chceš hledat i jiný? A hlavně o jak velkou oblast hledání se přibližně jedná?
Mrknu na to odpoledne, teď jdu spát.
Ahoj, potřebuju v prvním řádku vyhledat buňku s obsahem PARAMETER_5131 a v tomto celém sloupci označit buńky, které mají více než 50 znaků. Jedná se o max 30 sloupců, můj hledaný může být pokaždé na jiné pozici. řádků může být pokaždé taktéž jinak, jednou jeden, jednou 10000..
Niečo podobného (viď príloha)?
Reaguje na tebou zadanú skratku, t.j. nie na zmenu v hárku.
Z toho vyplýva, že v relevantnom stĺpci od prvej po poslednú vyplnenú bunku naplní podmienené formáty (pre ľahké odskúšanie som nastavil na dĺžku 5 znakov).
Čiže keď dodatočne naplníš medziľahlé bunky, ktoré budú spĺňať podmienku dĺžky, formát zareaguje. Keď však budú pribúdať riadky, musíš znova spustiť makro, čím sa Ti preverovaná oblasť predĺži.
Jednoduchou úpravou sa dá kód upraviť tak, že bude sledovať, či sa zmenila bunka v stĺpci daného parametra a ak áno, predefinuje si oblasť podmieneného formátovania (t.j. netreba manuálne spúšťať makro)
Označenie sa dá vykonať i "natvrdo", t.j. bez definovania podmienených formátov: prejdú sa všetky bunky stĺpca, porovnajú sa s potrebnou dĺžkou (ako správne poznamenal touchwood, funkcia pre dĺžku reťazca vo VBA je =LEN()) a tie, ktoré presahujú dĺžku, sa zafarbia.
Musím znovu do práce. Tak přikládám takovou rychlovku přes pole. V kódu pro testování nastaven počet znaků na 5.
Otestuj a dej vědět zda vyhovuje.