Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  5 6 7 8 9 10 11 12 13   další » ... 37

Po vložení prvního grafického objektu na list (z karty Vložení) se Vám automaticky karta s nástroji kreslení zobrazí. Pokud již takové objekty na listu jsou, stačí libovolný z nich aktivovat.

To, co se zobrazí v zaslaném souboru, není původní obsah zachraňovaného sešitu. ale cosi, co mi zavání zápisem XML. O téhle oblasti Excelu však nevím skoro nic, a proto jsem ten soubor radši poslal sem, abych nedal kamarádovi nepříznivý verdikt pro něco, co by šlo nějak zrekonstruovat.

Nešťastný kamarád mi poslal výsledek své snahy o záchranu excelského sešitu, který svému kolegovi hloupou náhodou na disku smazal. Výsledek svého pokusu mi poslal. Mám silné podezření, že ten pokus nebyl úspěšný (u mne ten soubor nefunguje ani po experimentování s jeho koncovkou). Třebas ho někdo z vás dokáže rozhýbat. Předem dík za kamaráda!

Přestal jsem hloubat nad smyslem Vašeho zadání a pokusil jsem se dodržet ho v té podobě, jak jsem ho pochopil.

Vzorec v 8.sloupci by způsobil, že každé přepsání B2 by se promítlo do všech buněk 8.sloupce (to asi nechcete). Lze ale napsat makro, aby změna v B2 vyvolala ve všech řádcích definované tabulky, kde 8.sloupec je ještě prázdný, jeho zaplnění hodnotou z B2. Jestli je to podle Vašeho záměru, napíšu Vám to.
Také umím napsat makro, které by pro každý nový řádek tabulky převzalo do jejího 8.sloupce automaticky aktuální hodnotu z B2. Vyberte si.

Maličko bych ten kód upravil, aby se události vypínaly jen v případě potřeby:

Private Sub Worksheet_Change(ByVal Target As Range)
if Cells(Target.row,4) = "ano" and Cells(Target.Row, 8) = "" Then
Application.EnableEvents = False
Cells(Target.Row, 8) = "=B" & Target.Row
Application.EnableEvents = True
End If
End Sub

Nebo bych ty události nevypínal vůbec a nechal tu událost proběhnout dvakrát.

Tohle by se snad mělo blížit Vaší představě

A nebylo by lepší reagovat rovnou na jedno klepnutí myši na vhodnou oblast na listu otevřením Vašeho userformu (třeba s dotazem, jestli to chci)? Bylo by to přirozenější, než si říkat o dvojklik. Pokud potřebujete, napíšu Vám to.
Já pro podobné věci radši používám pravé tlačítko myši s tím, že "někam" viditelně uvedu, jak to ovládání funguje.

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 10


Strana:  1 ... « předchozí  5 6 7 8 9 10 11 12 13   další » ... 37

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