Vzpomněl jsem si na fintu, kterou jsem z nouze kdysi vymyslel (a později zase plynule zapomněl). Když jsem si jist, že by originální anglický Excel data importoval správně, stačí, abych v Možnostech na dobu importu vypnul možnost "použít oddělovače ze systému". Zobrazení numerických separátorů tím přejde na anglický režim. V tomto režimu provedu nahrání zdravých anglických dat. Když následně Excel vrátím do původního stavu, mám zpět tuzemské numerické separátory, a to i v importovaných datech.
Pokud by vám takový postup vyhovoval, můžete také použít následující softwarový přepínač, který změnu tam i zpátky vyřídí:
Sub Prepinac()
Dim DekSep As Boolean, Kec As String
DekSep = Application.UseSystemSeparators
Application.UseSystemSeparators = Not DekSep
Kec = "Excel přepnul desetinný znak na "
If DekSep Then
Kec = Kec & "desetinnou tečku!"
Else
Kec = Kec & "desetinnou čárku!"
End If
MsgBox Kec, vbInformation, "PŘEPÍNAČ SEPARÁTORŮ"
End Sub
Mám dojem, že tazatel má zmatek v pojmech. Pokud je v buňce opravdu číslo, pak v něm žádné čárky, tečky ani mezery nejsou. Jde o oddělovače, které do číselné hodnoty buňky (.Value) dodá její formátování (podle nastavení nainstalované aplikace Excel). Pokud takové znaky budu hledat ve vlastnosti .Value, nic nenajdu (našel bych je ale ve vlastnosti .Text).
Jakmile se výše zmíněné znaky stanou skutečnou součástí vlastnosti .Value, mám k dispozici znakový řetězec, který může mít numerický obsah (v buňce je pak text, nikoliv číslo). Pak mohu takové znaky hledat, případně měnit. Pokud takový řetězec chci do buňky vložit, může ho (ale také nemusí) buňka pochopit jako číslo. To záleží na tom, jak by dopadla pro daný řetězec funkce IsNumeric.
Klasický bordel vzniká při nevhodném importu dat do českého Excelu z externích, zejména anglosaských zdrojů. Dodatečná náprava bývá obtížná a někdy dokonce pro méně zdatného uživatele nemožná. Velmi proto doporučuji řešit otázku obsahu dat už při samotném importu (Data / Načíst externí data), kde lze určit, jak mají být vstupní data interpretována. Postup, uvedený v dotazu, je klasickou ukázkou pozdní lítosti.
To je typická úloha pro použití jednoduché kontingenční tabulky, tj. práce na dvě minuty. Vřele doporučuji zvládnout základy pro KT.
To zadání je velmi neúplné. Co to je "pronásobit"? Chcete získat třetí sloupec se součinem z prvních dvou? Nebo jedno číslo jako sumu těch součinů? Nebo ještě něco úplně jiného?
Druhá nezodpovězená věc je, jak jsou k sobě oba sloupce přiřazeny. Jak se pozná, která hodnota má násobit kterou, aby výsledek poskytl užitečnou odpověď?
Pokud nesdělíte podrobnosti, nelze stanovit postup výpočtu. Zatím mi to připadne po výpočetní stránce jako pěkná pitomost, v níž nenacházím žádnou možnou interpretaci!
Žena dostala darem mobil Lumia 640 se systémem Windows. Manželka již roky používá můj stahovací sešit pro stahování obrázků do časově organizované struktury složek. Použitý algoritmus pracuje tak, že si na mobilu vyhledá složku s obrázky a po jednom je stáhne do počítače.
Stahovač jsem v průběhu let bez problémů instaloval do různých počítačů pro rozdílné mobily, což si vyžádalo vždy jen nalezení správné složky na mobilu a rozklíčování času z názvu souboru.
S Lumií 640 mám ale problém. Obrázky sice dokážu najít a zobrazit, nedokážu ale s nimi pracovat v Excelu. V příloze jsou zabalené dva screen shoty: jeden ukazuje dobře vypadající dialog pro vyhledání souboru na mobilu; druhý ukazuje, co z toho dialogu vznikne. Pro kterýkoliv vybraný soubor dostanu totožný výstup, který mně ani Excelu nedává smysl.
Nevím, jestli něco dělám špatně, nebo jestli Excel prostě neumí se soubory z windowsové Lumie 640 pracovat.
Velmi by mi pomohlo, kdyby někdo z vás uměl poradit, kam se mám za informacemi o popsaném jevu vydat.
V minulých dnech zde na fóru proběhla diskuze o využívání ovládacího prvku CheckBox na listu pro výběr možností z nabídky. Jako použitelná alternativa pro tento prvek se ukázala modifikovaná funkce pravého kliku myši. Z prověřování režimů pro správné chování uvedené techniky pro daný účel mi nakonec vznikl technicky plně funkční systém tvorby, vyplňování a vyhodnocování testů. Tento systém mi připadá autorsky i uživatelsky jako velmi vlídný prostředek. Sám ale v této oblasti mám málo praktických zkušeností. Přivítal bych proto spolupráci někoho s praxí v problematice zaškrtávacích testů, s nímž bychom mohli rozumně nastavit organizační, vyhodnocovací a bezpečnostní vrstvu úlohy. Přirozenou protislužbu nabízím v podobě plného přístupu ke zdrojovému kódu a bezvýhradné právo užívání aplikace pro vlastní potřeby. Zájemci o spolupráci se mohou s důvěrou obrátit na mailovou adresu, připojenou k mému nicku zde na fóru.
Zvláštní jev: tohle je 14.příspěvek do tohoto vlákna bez jediné odezvy jeho autora.
Za konkurenceschopnou alternativu pro použití ovládacích prvků na listu pokládám jen takovou, která na jednu volbu nepotřebuje víc než jedno kliknutí. Varianta pro můj osobní archiv nakonec reaguje na pravý klik pouze v citlivých oblastech listu jako přepínač ano/ne. Mimo tyto oblasti je prostý pravý klik na listu bez odezvy. Původní význam pravého kliknutí lze na tomto listu vyvolat ve všech buňkách listu, pokud pravé kliknutí provedu se stisknutou klávesou Shift. Toto nastavení jsem si vybral s využitím ochoty kamaráda, který mi jako laik pomohl vyhledat uživatelsky nejvlídnější alternativu.
Popsaná procedura využívá API funkci GetKeyState, která umožňuje pravým kliknutím myši volat až osm nezávislých procedur podle aktuálně použitých kláves Ctrl, Alt a Shift.
V tomto vlákně jsem slovo "já" nepoužil ani jednou. Nevím proto, jaký zdroj citujete. Že by mindráček, pane Anonyme?
Žádnou uživatelsky významnou výhodu jsem na dvojkliku neshledal; spíš má tu vadu, že místo jednoho kliknutí musím kliknout dvakrát. Přesto mne poznámka o dvojkliku přivedla k použití další možnosti, kterou je pravý klik, a to hned ze dvou důvodů:
(1) SelectionChange je nejčetnější událostí na listu, děje se soustavně a její ošetřování je reálnou zátěží práce s listem; při ruční obsluze se to zcela ztratí, ale chod VBA by to mohlo zdržovat. Pravé kliknutí je naopak vcelku výjimečná událost a její vyvolání má vždy speciální význam.
(2) uživatelsky má použití události SelectionChange drobnou vadu: při novém kliknutí na již vybranou buňku k nové události SelectionChange nedojde a nic se proto nezmění; pravý klik volá svou událost i při opakovaném použití stejné buňky.
Sešit s obsluhou pomocí pravého kliknutí je v příloze.
Fajfkování v buňkách může mít i jinou logiku, než prosté zaškrtávání. Do stejného listu jsem přidal druhou klikací tabulku s jiným grafickým symbolem a s logikou "max. jeden v řádku".
Přikládám možné řešení podle naznačeného nápadu.
Houfy zaškrtávacích políček na listu mohou být opravdu zdrojem různých grafických problémů, ale pro jednu volbu stačí jedno kliknutí. Ověření dat potřebuje tři (výběr buňky, vyvolání nabídky, potvrzení výběru), což je uživatelsky nevlídné.
Dobrý kompromis představuje událost SelectionChange, která po kliknutí do citlivé oblasti buněk může fungovat jako přepínač pro hodnotu v buňce. Použití znaku fajfka může přispět pochopitelnosti účinku kliknutí do citlivé oblasti. Vyhodnocení počtu buněk s fajfkou je velmi prosté.
Vzácně si v jednom textu odporujete. Sdílený sešit s přístupem více lidí do stejného místa v sešitě je přesně to, co by žádný vývojář v Excelu neměl připustit, protože to je zákonitým zdrojem datových kolizí. Kolegové si vzájemně nechtějí kazit práci, ale předpokládají, že někdo z nich sešit nezavře! A nakonec chcete, aby nešlo použít pole, které použil někdo jiný.
Vezměte prosím na vědomí, že Excel provádí změny na otevřeném sešitě ve vnitřní paměti každého počítače zvlášť a data na disk převádí jen občas. V době mezi dvěma uloženími změněných dat neví soubor na disku o změnách vůbec nic! To je příčina zmíněných kolizí při sdílení a důvod nevhodnosti sdílení shodných oblastí v sešitě.
V Excelu lze obelstít téměř vše. Rozumný řešitel se ale zpravidla nenechá nerozumnými požadavky uživatelů zatlačit do kouta. Zvažte význam své aplikace vůči technické náročnosti řešení. Měl byste hledat takové řešení, které je ve vašich technických silách. K čemu vám bude cizí řešení, kterému nebudete sám rozumět? Zatím bohužel k takovému řešení směřujete. Protože správnou volbou pro vaše zadání by bylo použití relační databáze pro ukládání aktuálních dat.
Odpověď k místu pro sdílení sešitu je rozumná a technicky příznivá. Druhá otázka se týká toho, nakolik je přípustné, aby kdokoliv cokoliv v kalendáři přepsal. Pokud nehrozí, že by si kamarádi (třeba ze škodolibosti) vzájemně záznamy přepisovali, je řešení velmi prosté. Vytvořte prázdný formulář, umístěte jej do vzájemně dostupného místa a nepovolujte sdílení. Kdo si jako první sešit otevře, ten do něj bude moci psát; ostatní se v té době budou moci jenom podívat, co je v kalendáři napsáno. Až ten první uživatel sešit zavře, bude se zápisu moci věnovat někdo další.
Vše se zkomplikuje, když budete chtít pojistit, abych nesměl přepsat existující záznam. Nejsložitější bude, když bude zakázané měnit cizí záznamy, ale vlastní záznamy bude možné změnit i zrušit. Změny je také možné vyhradit správci evidence. Všechny popsané režimy jsou technicky možné, jen se bude měnit složitost řešení.
Zkuste základní variantu. Složitější varantu zvolte, jen když si to vyžádá situace. V takovém případě bych vám mohl pomoci.
Můžete upřesnit, kam míníte svůj sešit umístit, aby ho mohli vaši kamarádi mezi sebou sdílet? Může na tom záviset, jakou technikou zajistit, aby nedocházelo ke kolizím při jejich zájmu o stejné období zápůjčky. Daleko jednodušší by samozřejmě bylo, kdyby si zapůjčení přístroje objednávali přímo u vás, vy byste si o tom vedl evidenci a potvrzoval byste (případně odmítal) požadavky v čase.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.