Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  8 9 10 11 12 13 14 15 16   další »

Nevím zda tohle bude vyhovovat, ale podívej se.
Popis je uvnitř makra

Lon

Samozřejmě, že by šel.
Nejprve zkus nějaké své pokusy, pokud se Ti nepovede dobře, vlož sem ten sešit s Tvými úpravami a podíváme se na to.

Malá nápověda:
Excel má funkci "Záznam makra".

Lon

Myslím, že v tomto případě nemusíš nic složitého vymýšlet.

Kopírovat v Excelu snad zvládne každý běžný uživatel.

Postup:
1. Na původním listu označit celý list;
2. Použít funkci Kopírovat (CTRL+C);
3. Otevřít nový sešit;
4. Levým tlačítkem myši kliknout na políčko A1 a vybrat volbu Vložit jinak. Tam zatrhnout Formáty, OK;
5. Levým tlačítkem myši kliknout na políčko A1 a vybrat volbu Vložit jinak. Tam zatrhnout Hodnoty, OK;
6. Uložit nově otevřený sešit pod zadaným názvem a odeslat.

Původní list je přenesen přesně tak jak potřebuješ, včetně podmíněného formátování, výšky řádků, šířky sloupců, ....

Toť vše. Tedy 6 kroků ke spokojenosti.

Pokud máš jinou představu, popiš ji podrobně, nebo lépe přilož soubor na kterém by to mělo fungovat.
Lon

Pak tam jsou také různé další možnosti jako je Hodnoty, Formáty, Komentáře, Šířk sloupců, Hodnoty a formáty čísla, .... Pokud nezatrhneš (nevložíš) Vzorce tak zůstanou jen hodnoty.
Podmíněné formátování se přenáší s Formátem

Řelk bych, že je to přesně to co potřebuješ.
Jeza.m Ti dal dobrý odkaz a pravděpodobně Ti celé makro napíše a okomentuje.

Já osobně spíš preferuji "nápovědu". Pokud se chceš opravdu něco pro sebe naučit a pochopit, musíš se do toho aktivně zapojit. Makra umožňují krokování a lze takto vysledovat co se vlastně po jakém příkazu děje (až na pár vyjímek).
Stáhni si ten soubor ve fóru a zkus si vytvořit vlastní návrh, není to složité.
Pokud pak budeš mít problémy, popiš je a dej sem Tvůj sešit k dispozici.

Vím, že každý nějak začínal. Tyto věty nejsou myšleny nijak zle (vlastní zkušenosti).
Sice nejsem zase tak starý, ale hodně už pamatuji.28

Co použít "Kopírovat" (celý list) a pak "Vložit jako" (do nového listu) a vybrat Hodnoty.

Popis makra je snad dost výstižný.


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

sl = 1 ' požadovaný sloupec v tomto případě 1 (tedy A)
rd_odkud = 3 ' číslo řádku odkud se má kopírovat
rd_kam = 5 ' číslo řádku kam se má kopírovat
sl_kam = 2 ' číslo sloupce kam se má kopírovat (tedy B)

' pokud jsi na prvním řádku požadovaného sloupce (sl)
If ActiveCell.Column = sl And ActiveCell.Row = 1 Then
' výběr buněk pro kopírování
Range(Cells(rd_odkud, sl), Cells(ActiveSheet.UsedRange.Rows.Count, sl)).Copy
' nastavení se na buňku kam kopírovat
Cells(rd_kam, sl_kam).Select
' vložení
Paste
' zrušení označení oblasti pro kopírování
Application.CutCopyMode = False
' nastavení kurzoru na druhý řádek vybraného sloupce
Cells(2, sl).Select
End If

End Sub

To marficek119:
Pokud si nejseš jist základními věcmi, pak s registry raději neexperimentuj.
Vložení do registru musí být na začátku (při otevření sešitu) - otestovat, zda je klíč v registru zapsán, pokud ne tak zapsat.
Načtení pak následuje a pokud je splněna podmínka uzamčení - uzamknout list.

To Jeza.m:
Co se týká DeleteSetting

DeleteSetting "Aplikace", "Demo", "Klíč" - vymaže pouze "Klíč" z registru;
DeleteSetting "Aplikace", "Demo" - vymaže celou sekci "Demo";
DeleteSetting "Aplikace" - vymaže celou větev "Aplikace" - tedy vyčistí po sobě.
25 Lon

Moc nerozumím pojmu:
dojde automaticky k nakopírování všech hodnot ve sloupci a vložení všech hodnot jinam (třeba do sloupce začínajícího v buňce B5).
Pokud je myšleno celý sloupec, pak je to "neřešitelný" problém. Bude totiž chybět 5 řádků pro nakopírování.
Nějaký lepší příklad nebo ukázka by nebyla.

Možné řešení:

sl = 1 ' požadovaný sloupec v tomto případě 1 (tedy A)
rd_kam = 5 ' číslo řádku kam se má kopírovat
sl_kam = 2 ' číslo sloupce kam se má kopírovat (tedy B)
If ActiveCell.Column = sl And ActiveCell.Row = 1 Then
Range(Cells(1, sl), Cells(65536 - rd_kam, sl)).Copy ' výběr buněk pro kopírování (celý sloupec A mínus počet řádků)
Cells(rd_kam, sl_kam).Select
Paste
Application.CutCopyMode = False
Cells(2, sl).Select
End If


Celou proceduru pak vložit na daném listu do procedury Worksheet_SelectionChange(ByVal Target As Range)

To Jeza.m:
Souhlasím, upozorňoval jsem na automatické uložení.

If Date > Cells(1, 256) + Cells(2,256) Then
List1.Unprotect "heslo" '...odemknout list s heslem "heslo" - můžeš nastavit cokoliv
Cells.Locked = True '...zamknout buňky
List1.Protect "heslo" '...zamknout list s heslem "heslo" - můžeš nastavit cokoliv
ActiveWorkbook.Save ' uložení sešitu se změnami
End If


Je samozřejmostí, že takovéto testy by se měly dělat při otvírání sešitu.

Mj. s těmi registry to není špatné, čekal jsem, že to vykoumáš. 5
Existuje taky něco jako DeleteSetting(....)???

Díky "bláznovi" Jeza.m, který radí co může.
Já z těch jeho příspěvků také čerpám a je to super.
Kéž by bylo více takových "bláznů".

To Jeza.m: vydrž! 22

Tak např. skrýt poslední sloupec v sešitu (což je 256-tý) a do druhého řádku vložit počet dní pro testování.
Při prvním průchodu nebude datum obsahovat nic.
Tedy buňka IV1 bude prázdná a buňka IV2 bude obsahovat počet dní. Sloupec IV skrýt, uzamknout sešit heslem a vložit makro.


If Cells(1, 256) = Empty Then
List1.Unprotect "heslo" ' odemkutí listu heslem "heslo" k provedení změn
Cells(1, 256) = Date ' vložení aktuálního data
List1.Protect "heslo" ' uzamčení sešitu heslem "heslo"
End If

If Date > Cells(1, 256) + Cells(2,256) Then
List1.Unprotect "heslo" '...odemknout list s heslem "heslo" - můžeš nastavit cokoliv
Cells.Locked = True '...zamknout buňky
List1.Protect "heslo" '...zamknout list s heslem "heslo" - můžeš nastavit cokoliv
ActiveWorkbook.Save ' uložení sešitu se změnami
End If


Ovšem pokud si někdo stáhne sešit znovu zase mu bude fungovat určitý počet dní.
Samozřejmostí je i zaheslování projektu! Jinak si to každý otevře a heslo ví.

Sice nevidím důvod odemykat list se vzorci, ale budiž.
Pokud by byly uzamčeny buňky se vzorci a volné jen ty, do kterých může uživatel zapisovat data, pak lze vše vyřešit zápisem datumu při otevření sešitu do určité "skryté" buňky na listu a ten pak porovnávat.

Poté zamknout všechny buňky v listu (Cells.Locked=True) a automaticky ukládat sešit při uzavření.

Takhle to nepůjde. Excel neumí takto jednoduše uložit vybrané sloupce do txt souboru.
Lze to vyřešit celkem elegantně, kde si vytvoříte list s Vámi vybranými sloupci (tedy A, C a E) a tento list pak pomocí dialogu uložíte do txt.

Pro Vaše makro přiřadíte:

jmenoTXT = "prevod" 'jméno listu ve kterém jsou vybrané sloupce - tento list samozřejmě musíte vytvořit
jmeno = ActiveSheet.Name
jmenoSouboru = Application.GetSaveAsFilename(fileFilter:="Text Files (*.txt), *.txt")
If jmenoSouboru <> False Then
Sheets(jmenoTXT).Select
ActiveSheet.SaveAs Filename:=jmenoSouboru, FileFormat:=xlTextMSDOS, CreateBackup:=False
Sheets(jmeno).Select
End If

Nejjednodušší způsob je nahrát si makro, které to provede (Příkaz Nahrát makro) a pak jej přiřadit k tlačítku formuláře.


Strana:  1 ... « předchozí  8 9 10 11 12 13 14 15 16   další »

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