Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno EXCEL a formát buňky

Dobrý den, potřeboval bych poradit,jak sestavit omezující podmínku pro rozsah buněk(v mém případě sloupec),aby do jednotlivé buňky šel zapsat řetězec alfanumerických znaků nastavený na určitý počet znaků-např.35znaků,formátovaných jako text nebo obecné(případně při hromadném kopírování do těchto buněk přebytek ustřihnout).Volba v menu ověření dat mi nevyhovuje. Děkuji.

Předmět Autor Datum
Nikdo nezná recept? Tak se asi dál budu ""přiměřeně trápit"" v accesu.
Olda-LB 23.10.2011 20:04
Olda-LB
V nabídce "data" - ověření dat - délka textu. ;-)
Tomáš Fuk 23.10.2011 20:24
Tomáš Fuk
Volba v menu ověření dat mi nevyhovuje.
host 23.10.2011 20:29
host
Receptom je použiť VBA, kde si napíšeš vlastnú funkciu, ktorú potom použiješ v overení dát. Postupov…
los 23.10.2011 20:49
los
Děkuji za odpověď, ale s VBA nejsem moc kamarád-jsem samouk typu pokus-omyl(vždyť nejde o život). Kd…
Olda-LB 26.10.2011 23:13
Olda-LB
Predpokladám, že overenie bunky na alfanumerický obsah si zvládol podľa toho predchádzajúceho odkazu…
los 27.10.2011 21:44
los
Ahoj a díky za radu,v Ecxelu 2003 to funguje, mezitím jsem nainstaloval 2007 a taktéž OK. Ještě jedn… poslední
Olda-LB 06.11.2011 21:40
Olda-LB
Je to trochu kostrbaté, ale šlo by to takto. Do volného sloupce někam za tabulku dáš funkci =NAHRADI…
qdj 24.10.2011 16:33
qdj

Receptom je použiť VBA, kde si napíšeš vlastnú funkciu, ktorú potom použiješ v overení dát. Postupovať môžeš napríklad podľa tohoto návodu: MS Excel: Test a string for an alphanumeric value.

Keď budeš chcieť dosiahnuť také správanie, aby sa to pri vložení orezávalo na požadovaný počet znakov, tak to dosiahneš opäť pomocou VBA, v ktorom obslúžiš udalosť Change pomocou funkcie Worksheet_Change.

Ak ti nebude stačiť len tá validácia, ktorú by si mal zvládnuť podľa toho prvého odkazu, tak ti tú funkciu Worksheet_Change napíšem.

Predpokladám, že overenie bunky na alfanumerický obsah si zvládol podľa toho predchádzajúceho odkazu.

Funkcia pre orezávanie textu po vložení do stĺpca A by mohla pre začiatok vyzerať takto:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim aRange As Range
    Dim aCell As Range
    
    Set aRange = Intersect(Target, Range("A:A"))
    If Not aRange Is Nothing Then
        For Each aCell In aRange
            If Len(aCell) > 35 Then
                aCell.Value = Mid(aCell, 1, 35)
            End If
        Next
    End If
End Sub

Je to trochu kostrbaté, ale šlo by to takto.
Do volného sloupce někam za tabulku dáš funkci =NAHRADIT(J22;11;90;"") kde samozřejmě J22 je aktuální buňka se zkracovaným textem, druhá hodnota od jakého znaku chceš řetězec zkracovat a třetí hodnota musí být dostatečně velká, abys vymazal opravdu veškerý přebytečný text.
Pak si spustíš záznam makra, vybereš všechny nové textové hodnoty, ctrl+c a vložit jinak (hodnoty) namísto původního textu. Vypnout záznam makra.

Nevýhody - text se nezkracuje automaticky, ale až po spuštění makra a makro musíš upravit pokaždé, když přidáš další řádky do tabulky.

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