Nejspíš jste nepostřehl, že přílohy se sešity je nutno pro zaslání zkomprimovat. Pokládám za účelné balit sešity jako zip, protože s tímto formátem nemá nikdo problém.
Ta úloha je zajímavá, ale nedourčená. Podezřelé už je jen to, že bych měl prodávat za nákupní cenu. Proč bych takovou věc měl dělat? Dál není vůbec jasné, co určuje budoucí prodeje, z čeho plyne setrvačnost prodejní ceny, co se děje, když se neprodá, jak se hodnotí prostředky, vázané v zásobách...
Podle mne to chce vytvořit ekonomický model té obchodní činnosti a stanovit hodnotící kritérium pro volbu správné strategie nákupu a prodeje. Nic takového jsem v zadání nenašel.
Datový zdroj je klasická ukázka nevhodných vstupních dat, která jsou extrémně náchylná k chybné interpretaci dat. Pokud ale v datech nebudou poruchy, může převod dopadnout i dobře.
Znakový řetězec, obsahující lomítko, není číslo! Vaši úlohu má smysl řešit pouze tehdy, pokud vaše "čísla" obsahují vedoucí nuly. Bez nich dostanete podobný nesmysl, jaký vzniká např. při řazení listů v prostředí VBA. Ne, že by to nešlo vyřešit, ale pokus řadit textové řetězce podle numerických pravidel pokládám za projev řešitelské hlouposti nebo vadného zadání.
Nabízím odpověď s ochranou tabulky před přepsáním dat v důsledku tažení z oblasti mimo tabulku. Jako obvykle vede lepší funkčnost na složitější řešení. Když už jsem si s tím hrál, zobecnil jsem možnou polohu tabulky na listu. Ani to moc nebolelo
Dík za upozornění, pokusím se s tím "nějak" vyrovnat. Obecně a téměř bezvýhradně platí, že všechno v Excelu lze nějak obelstít. Všem svým excelským partnerům stále tvrdím, že ochrany slouží výhradně k tomu, aby je nešlo porušit nevědomky a nechtěně. Proti těm, kteří chtějí ochrany obejít vědomě a mají na to znalosti, se prostě Excel svými nástroji není schopen ubránit.
Vámi popsaný postup bohužel patří do kategorie, v níž nelze vyloučit blbou náhodu při běžné manipulaci s listem. To je také důvodem, proč se chci pokusit tuto možnost nějak vyřešit. Jinak upozorňuji, že stejnou technikou lze snadno rozbít např. ověřování v buňkách, aniž by Excel proti tomu za celou dobu své existence cokoliv podnikl .
Dík za pochvalu. Podobnou filozofii ochrany buněk někdy používám pro ochranu vzorců před nechtěným přepsáním místo zamykání buněk a listů.
Pro laického uživatele Excelu bývá často obtížné udržet pořádek v zámcích na buňkách v kombinaci se stavem listu. Běžné zamčení listu také vyřazuje z použití řadu operací s listem a jemnější nastavení režimu pro zamčený list bývá pro laiky oříšek.
Použití šablony, která chrání existující vzorce testem na výskyt vzorce v aktuální oblasti, žádné speciální nastavování listů nevyžaduje. Navíc zůstávají plně funkční všechny operace, které jsou zamčením listu blokované.
K používání výše zmíněné šablony zatím nemám žádné negativní reakce.
Nemusíte nic zamykat. Do listu vložte následující událostní proceduru
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim N As Long
N = Target.Row
If Target.Rows.Count > 1 Then
Cells(N, 1).Select: Exit Sub
End If
If Cells(N, 1) <> Int(Now) Then
Cells(N, 1).Select: Exit Sub
End If
End Sub
Pak bude možné vybrat buňky pouze v řádku s dnešním datem. Výběr v jiných řádcích povede vždy do sloupce A vybraného řádku.
Vypadá to, že jsem se dostal na jádro pudla. Zákazník, u kterého problém nastal, má CD s nedočerpanou multilicenci na Office 2007, z níž do nových počítačů svůj Office podle potřeby instaluje. Nedošlo jim, že tím instalují stále tu původní a neaktualizovanou verzi se všemi starými vadami. O této skutečnosti jsem neměl tušení. Teď jsem našel odkaz, který by daný aktualizační problém měl vyřešit:
https://support.microsoft.com/cs-cz/kb/2591018
Aktualizací sice není sto, ale je jich docela dost Věřím, že se stav věcí zlepší. Dík za pomoc!
Hav-Rane, dík za odpověď. To "i" odpovídá předchozímu popisu "pro i-tou položku", takže bez překlepu .
Horší je, že Tvůj příkaz je v podstatě totožný s tím mým. Pokud to ve Tvém E-2007 běhá (a u mne v E-2010 taky), pak nemám jiné vysvětlení, než že nejde o stejnou verzi E-2007. Můžeš upřesnit verzi svého Excelu? A ještě jeden dotaz: víš, jestli Tvůj E-2007 prošel nějakými updaty? Je totiž možné, že máš ve svém E-2007 jeho původní chybu opravenou, zatímco "můj" E-2007 nikoliv.
Vytvářím pomocí VBA graf typu X-Y se spojovacími čarami v datových řadách (typ grafu xlXYScatterLinesNoMarkers). Graf obsahuje několik datových řad a já jim potřebuji přidělit barvy podle předem stanoveného předpisu. Ruční nastavení nedělá problém ani v E-2007, ani v E-2010. Pomocí VBA v E-2010 lze tento úkon zjistit pro i-tou datovou řadu příkazem
ActiveChart.SeriesCollection(i).Format.Line.ForeColor.RGB = RGB(Red, Green, Blue)
kde Red, Green a Blue jsou složky barev. Odladění v E-2010 proběhlo v pořádku. Při spuštění odladěného sešitu v E-2007 sice VBA provede výše uvedený příkaz formálně bez reptání, fakticky se ale nestane vůbec nic.
Víte někdo, jestli lze změnu barvy spojnice v E-2007 programově zajistit tak, aby k ní opravdu došlo? Zkusil jsem použít makrokameru při ručním úspěšném nastavení barvy. V E-2007 makrokamera nezaznamenala žádnou akci.
Problém znám zprostředkovaně od svých klientů, protože sám sdílení nemám jak vyzkoušet. Nikdy jsem ale nedostal reklamaci v tom smyslu, že by moje makra při sdílení nefungovala. Bez sdílení samozřejmě platí, že změny (a tedy i opravy maker) může v sešitě provádět pouze ten, který si sešit otevřel jako první. Teoreticky by to mohlo být tak, že by při povoleném sdílení mohly opravy maker požadovat výhradní přístup vývojáře (nikdo jiný by nesměl mít sešit otevřený). To neumím ani potvrdit, ani vyvrátit.
Nedávno jsem ale náhodně prolomil jinou bariéru. Sešit xlsm jsem zkopíroval do formy xlsx a vykašlal jsem se na tlačítka, která by stejně pod xlsx neměla mít žádný účinek. Výsledek mne zaskočil: tlačítka v xlsx fungovala dál s tím, že se odvolávala na makra z "mateřského" sešitu xlsm. A pak že formát xlsx neumí s makry pracovat. Umí a nedělá mu to problémy! Jako finta se to dá použít na ty uživatele, kteří makra nesnášejí!
Posílám tedy svoje řešení pomocí makra. Výběr provádí shodný se zadáním, pořadí odpovídá seznamu na hárku 1.
Když postupně projdete řádky na hárku 1 a každý otestujete na existenci jména v hárku 2, dostanete seznam pro hárok 3. Makrem je to snadné. Pro vzorec mne řešení nenapadá.
Toto fórum chápu jako platformu pro širokou diskusi, nikoliv pro dialog dvou lidí, natož pro polemiku. Pokud sem něco píšu, tak ne proto, že něčemu věřím, ale proto, že jsem si to ověřil. Zjevná nedůvěra a konfrontační tón není dobrý základ pro výměnu názorů.
Je veřejným tajemstvím, že E-2007 bylo vydáno ve velkém spěchu a se spoustou nedodělků. K těm nejrozsáhlejším patří práce s objektem Shape (ale také např. práce s makrokamerou, díry v zabudovaných helpech aj.). Nakonec mne nepřekvapuje, že se objevil další nesoulad mezi E-2007 a E-2010, který se o mnoho neposunul dopředu proti E-2007, ale řadu nedodělků ze svého předchůdce opravil. Je trochu s podivem, když i vývojáři ještě dnes pracují s touto devět let starou verzí Excelu. Proti gustu není dišputát...
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.