Následující technika funguje i na nezamčeném listu. Podmínkou pro ni je to, že na listu existuje alespoň jedna odemčená buňka, kterou při aktivaci listu zaktivujeme:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static Puvod As String
If Puvod = "" Then Puvod = Target.Address
If Target.Locked = False Then
Puvod = Target.Address
Else
MsgBox "Zavřeno": Range(Puvod).Select
End If
End Sub
Já sám při jejím použití žádnou zprávu nevydávám. Smysl toho, že se kurzor vrátí na výchozí místo, je podle mne dostatečné upozornění.
Od jisté doby pozoruji v E-2016 následující vadnou reakci:
Po přidání řádku do ListObjektu, vzniklého pomocí
ListObject.ListRows.Add,
který má mj. reprodukovat formátování tabulky do nového řádku, se mi nastavuje vadným způsobem formát pro datum. Konkrétně formát "dd.mm.rrrr" se mi mění na anglický formát "m.d.rrrr". Ozvali se mi s tím uživatelé dvou mých aplikací, kterým kombinace obou formátů ve stejném sloupci pochopitelně vadí. Teď musím v každém přidaném řádku ten formát násilím měnit. Existuje nějaká inteligentnější cesta nápravy?
Zcela triviální řešení spočívá v tom, že jednou týdně spustíte proceduru, která nová data z aktuálního listu přihraje za konec historických dat na archivním listu a pak aktuální list vyčistí pro sběr dalších dat. I nešikovný vývojář by to měl zvládnout max. deseti řádky VBA. Kdyby Vám takový postup stačil, můžete si to zkusit napsat sám. Kdybyste neuspěl, může Vám to napsat každý, kdo ví, co je VBA.
Mám E-2016 a žádnou změnu v redukcích velikosti souboru jsem nezaznamenal. Redukce až na polovinu je běžná při přechodu z formátu XLS na XLS? kvůli zabalení uložených částí XLS? do formálního ZIPu. Zmenšení souboru kolem 10% (i víc) je u mne charakteristické při uložení, během nějž se soubor zbaví historie o dříve provedených změnách (tak si tu redukci sám vykládám). Neumím ale vyloučit, že E-365 teď umí proces redukce provádět účinněji než moje krabicová verze E-2016.
Nejspíš jste "při úpravě a implementaci" neudělal něco správně.
Každopádně je nutné oddělit počitadla řádků pro každý list zvlášť, např.
i = ActiveCell.Row: j = 0
Do While j < Počet
If Rows(i).Hidden = False Then
List2.Range("B8").Offset(j, 0) = Cells(i, 7) 'Typ
List2.Range("D8").Offset(j, 0) = Cells(i, 5) 'číslo
List2.Range("F8").Offset(j, 0) = Cells(i, 2) 'Výrobní číslo
List2.Range("N8").Offset(j, 0) = Cells(i, 6) 'Datum expedice
j = j + 1
End If
i = i + 1
Loop
Petře, na přelomu dvacátého a jednadvacátého, přesněji někdy v roce 1999, nedlouho po vybavení sady MS Office jazykem VBA. Už je to hodně dávno
Jsem lehce v šoku. Termín makrokamera jsem převzal z literatury na přelomu století, kdy jsem práci s makry začal objevovat (nejspíš ho mám od J.Černého). Sám jsem si ho určitě nevymyslel. Když jsem teď prohlédl cca šest manuálů k Excelu, které mám trvale na svém stole, pojem makrokamera jsem v jejich rejstřících nenašel. Za používání tohoto termínu se omlouvám. Záznamník maker je pro mne přijatelný a dokonce mi přijde výstižnější.
Makrokamera je nástroj Excelu, který lze zavolat např. pomocí Zobrazení/Makra/Zaznamenat makro (následně se vypíná na stejném místě pomocí Zastavit záznam). Všechno, co ručně provádíte při spuštěné makrokameře, se zaznamenává v podobě VBA kódu do vznikajícího makra ve standardním modulu. Tímto způsobem se dá obecně zjistit, jak ve VBA lze napsat to, co umíte udělat z ruky. Pokud Vám ani tohle vysvětlení nepomůže, pak byste se asi o VBA neměl vůbec pokoušet.
Xlnc správně upozorňuje, že VBA neumí vyjádřit všechny možné manuální akce. Takové akce makrokamera prostě ignoruje.
Pro nastavení tiskárny pomocí VBA lze použít makrokameru. Získáte ale kompletní nastavení všech vlastností tiskárny, z nichž velkou většinu není nutné nově nastavovat. Pokud Vás zajímá jen to, co jste měnil, můžete pomocí makrokamery vygenerovat stav před nastavením a po něm. Porovnáním obou maker zjistíte, ve kterých vlastnostech došlo ke změně. Pak postačí, aby výsledná procedura obsahovala jen ty vlastnosti, které se změnily.
Konstatování, že někdo v MS špatně nastavil klíče v registrech pro WebBrowser, je dost smutná záležitost. Návod, jak to spravit, je nesporný přínos. Pro přenositelnost takových aplikací s WebBrowserem je to pro mne dost problematické. Správné nastavení registrů by muselo být zabudováno do spouštění aplikace (pokud na to možnosti Excelu budou stačit). Zkusím to časem otestovat.
Dík za informaci, kterou jsem neznal.
O těch fleších to platí. Soubory SWF lze navíc vkládat přímo na list. Výborně to funguje např. s hodinami, ukazujícími reálný čas (včetně sekund), protože běžící fleš nijak nebrání v práci na listu.
Ještě zpět k prvku WebBrowser, který list odmítá přijmout. I to lze obelstít pomocí nemodálního formuláře se skrytým titulním pruhem, když v jeho WebBrowseru spustíme GIF. V této podobě je možné umístit animovaný GIF na datový list, aniž by to omezovalo práci na listu.
V příloze je sešit spolu s gify, které ukázka používá. Všechny soubory ze zipu je nutno rozbalit do společné složky, aby to běhalo.
Tak to jsem trouba. V ToolBoxu jsem hledal ikonku pro rozšířenou nabídku (jako je v nabídce pro datový list) a pravá myš mne nenapadla . Škoda, že Microsoft stejnou nabídku pokaždé poskytuje jiným způsobem...
Každopádně dík za nakopnutí!
V klasickém Excelu existovala možnost vložit do formuláře prvek ActiveX typu WebBrowser, ve kterém bylo možné zobrazit animovaný GIF. S příchodem ribbonového Excelu již neobsahuje nabídka prvků ActiveX pro formuláře možnost čerpat z rozšířené sady prvků, kam WebBrowser patří. V nabídce pro datový list je sice WebBrowser dostupný, ale datový list ho prostě odmítá akceptovat.
Tento stav se dá obejít tak, že se v novém Excelu použije starý formulář s připojeným dotyčným prvkem (tak jsem to udělal a funguje to). Kdybych takový formulář neměl (a neměl ani přístup do klasického Excelu), neuměl bych si poradit.
Existuje možnost, jak přímo v E-2016 do formuláře vložit prvek ActiveX z rozšířené nabídky prvků?
Souhlas s veny. Jen bych pro jednotlivé hodnoty doporučil radši vlastní formát m:ss,00 a pro součtový řádek vlastní formát [h]:mm:ss,00
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.