Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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)

Předmět Autor Datum
VBA teda moc nepěstuju, ale řekl bych, že si pleteš funkce Excelu a VBA. Délku stringu ve VBA zjist…
touchwood 07.02.2023 21:06
touchwood
No nějak to nejsem schopen dát dohromady ani tak, ale děkuji za snahu. Dokáže někdo něco jdnoduchého…
Martinx 08.02.2023 06:01
Martinx
Přilož nějaký vzorový sešit ať je vidět struktura dat. Taky by neškodil lepší popis funkce, parametr…
Siki83 08.02.2023 07:17
Siki83
Ahoj, potřebuju v prvním řádku vyhledat buňku s obsahem PARAMETER_5131 a v tomto celém sloupci označ…
Martinx 08.02.2023 09:02
Martinx
Niečo podobného (viď príloha)? Reaguje na tebou zadanú skratku, t.j. nie na zmenu v hárku. Z toho vy…
robert13 08.02.2023 12:24
robert13
Musím znovu do práce:-/. Tak přikládám takovou rychlovku přes pole. V kódu pro testování nastaven po… poslední
Siki83 08.02.2023 14:29
Siki83

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.

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.

Zpět do poradny Odpovědět na původní otázku Nahoru