< návrat zpět

MS Excel


Téma: Automatické odstranění diakritiky - chyba rss

Zaslal/a 9.9.2022 9:57

Dobrý den,
prosím o radu s makrem pro odstranění diakritiky v textu. Tohle funguje dobře v případě, že píšu/vkládám text do jednotlivých buněk. Problém je, že tam potřebuji zkopírovat větší množství dat současně (cca 12 sloupců a desítky až stovky řádků). V tu chvíli mi to vyhodí chybu "Run-time error 13 Type missmatch". Stejnou chybu mi to vyhodí ikdyž se snažím více buněk současně smazat.

Děkuji za radu.

Private Sub Worksheet_Change(ByVal Target As Range)

Const cz As String = "áÁčČďĎéÉěĚíÍňŇóÓřŘšŠťŤúÚůŮýÝžŽ"
Const en As String = "aAcCdDeEeEiInNoOrRsStTuUuUyYzZ"
Dim i As Integer
Dim Lc As Long
Dim OrigLetter As String
Dim x As Variant
Dim CzLetter As String
Dim EnLetter As String
Dim NewWord As String

Application.DisplayAlerts = False
Application.EnableEvents = False

Lc = 30
OrigLetter = „“

For x = 1 To Len(Target.Value)

OrigLetter = Mid(Target.Value, x, 1)

For i = 1 To Lc
CzLetter = Mid(cz, i, 1)
EnLetter = Mid(en, i, 1)

If OrigLetter = CzLetter Then
OrigLetter = EnLetter
End If

Next i

NewWord = NewWord & OrigLetter
Next x

Target.Value = NewWord

Application.DisplayAlerts = True
Application.EnableEvents = True

End Sub

Zaslat odpověď >

#053355
elninoslov
Vaše riešenie je zlé.
Použite to od eLCHa.
Ak budete mať problém s implementáciou, pridajte prílohu, nech vidím ako máte rozmiestnené údaje po liste. Pri Worksheet_Change treba rozlišovať, kedy reagovať a kedy nie. Pridajte zoznam buniek/oblastí ktorých sa to má týkať, podrobnejší popis použitia. A adekvátne Vám to prispôsobím.citovat
#053356
avatar
Koukám na jeho řešení, ale nedaří se mi, nebo spíš nechápu jak na to. Posílám tedy v vzorový soubor.
Rozložení je vždy stejné, pouze se mění počet řádků.

https://www.uschovna.cz/zasilka/CGMFH3GAERRZ3JE6-GRS/citovat
#053358
elninoslov
Ja už to mám zhruba pre Vás aj prichystané, aj som rátal s číslami pomedzi, čakám len na ten rozsah 2
Takže to má reagovať na zmenu od 4. riadku (vrátane) ? Alebo má reagovať a odstraňovať diakritiku aj z riadkov 1-3 (kde 3. je hlavička dát)
Ak áno, tak ďalej od bunky A4 ľubovoľný počet riadkov a ľubovoľný počet stĺpcov ?

EDIT:
Tu máte zatiaľ nastrelenú prípravu.
Oblasť prevodu je nastavená konštantou na A4:BA10000
Na oddelenie čísel, riadkov, stĺpcov som použil tieto znaky "|", "¤", "•" v konštantách. Treba použiť také paznaky, ktoré sa v texte vyskytovať nebudú.

Uvádzam, že ako výkonnú časť makra som použil riešenie od eLCHa. Doprogramoval som len obslužnú časť.
Příloha: zip53358_export-merick-delus-v4-kopie.zip (67kB, staženo 6x)
citovat
#053359
avatar
Úžasné 1 Hlavička v tom být nemusí. Bohatě to stačí od buňky A4 všechny sloupce i řádky.

Když jsme v tom, napadá mě ještě jedna maličkost o co jsem se snažil ale marně. (Možná to ani nejde :o )

Na dalších listech kde dochází k porovnání a rozdělení vložených dat je možné aby to vynechalo prázdné řádky? ty co teď jsou celé "nulové"?citovat
#053360
avatar
funguje to skvěle, děkuji mockrát 10citovat
#053361
elninoslov
??? Tie listy "X", "Y", "Delus" sú predsa celé zle.
Ako viete, že budete mať nových dát zrovna po riadok 175 (teda 174 dátových) ?

V Delus majú byť pod sebou Y a X ? tak prečo sa z Y ťahá iba 99 riadkov a z X iba 100 riadkov, keď Y aj X sú nastavené na 174 riadkov?

Viete prečo máte v stĺpcoch:
Přední hrana - Tloušťka
Zadní hrana - Tloušťka
Levá hrana - Tloušťka
Pravá hrana - Tloušťka
samé 0 ? Lebo hľadáte napr. RIGHT('Vložení dat'!$J4;2)="45" a to nikdy nenastane, lebo dáta v zdrojových stĺpcoch tak nekončia. Majú tam ešte predsa veličinu "mm" napr
HD 241145 - ABS dub gravír 22x0,45mm

Tie 3 listy by sa mali plniť buď makrom alebo PowerQuery, obe si dokážu tie stĺpce dopočítať do Vami požadovaného tvaru.citovat
#053362
avatar
ten počet řádků u Y a X je pouze orientační (když vidím, že dat je více tak vzorec jednoduše ručně roztáhnu dále)

že to teď nebere data (sloupce hran) když je tam jednotka "mm" to vím, použil jsem pro vzor špatná data a uvědomil si to a pozdě.

To co jsem tím myslel bylo, jestli jde aby se počet řádku na listech Y, X, Delus sám měnil podle vložených dat. Abych to nemusel ručně "rozšiřovat/zmenšovat" a nevznikaly mi tam ty řádky kde jsou samé "0"citovat
#053363
elninoslov
Aha, OK.
Počet riadkov sa dá riešiť niekoľkými spôsobmi:
a) dostatočným predimenzovaním vzorcov
b) použitím Tabuľky (to nie je prípad listov Y,X,Delus, lebo v nich sú závislé dáta)
c) natiahnutím vzorcov v makre na presnú veľkosť
d) použitím PowerQuery dotazu, ktorý vytvorí aktuálny výsledok (nebudú tam vzorce ale dáta), obnovuje sa cez Údaje - Obnoviť všetko, alebo toto obnovenie vyvolá makro na svojom konci.
e) samotné makro vyrobí presne veľký výsledok (teda nebudú tam vzorce ale dáta)

0 sa dajú skryť predsa priamo v tých vzorcoch pomocou IF/KDYŽ a "", alebo pomocou Podmieneného formátu "General;General;;@", alebo filtrom

Vy tie listy X a Y potrebujete, alebo ide iba o pomôcku pre list Delus?

O čo vlastne ide v tých listoch? O to aby ste v Delus zoradili za sebou najskôr upravené dáta ako v liste Y a hneď za nimi upravené dáta ako v X (teda bez "prázdnych"/"nulových" riadkov)? Je možné tie medzivýpočty v listoch vynechať a zapísať rovno hodnoty do Delus (či už makrom alebo PQ)?

Tie vždy nové dáta, ktoré kopírujete do "Vložení dat", to máte nejaký súbor exportu z nejakého SW, a ten si otvoríte a prekopírujete celé dáta? Tie dáta v tom súbore majú na začiatku aj tie "Výrobní dávka" a pod. čo sú na riadkoch 1 a 2?

A napadajú ma stále nejaké otázky, ktoré sú rozhodujúce pre návrh riešenia. Napr.:
Vy tie údaje potom ešte nejako upravujete/dopisujete v liste "Vložení dat"?
Ak áno, tak je potrebná kompletná aktualizácia po každej zmene, alebo pri kliknutí na tlačítko?
Sú dáta zoradené/zoskupené na "Y" a "X" alebo pomiešané?

Tu máte jednu z možností - kompletne spracované makrom - teda žiadne vzorce.
Příloha: zip53363_export-merick-delus-v4-kopie-new.zip (46kB, staženo 6x)
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