Příspěvky uživatele


< návrat zpět

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

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.

Range("J4:J6, E14:G16, J14:J16, C18:C36, G18:J36").Select ' vybere Vámi zadanou oblast buněk
Selection.ClearContents ' vymaže data

Řešení je v příloze.
Předpokládám, že jednotlivé druhy budou zapisovány do řádků, proto je výhodnější vyhodnotit každý řádek na konci výpisu.
1. vyhodnocení řádku
2. přenesení údajů do dalšího listu.

Zkusím nakopnout.
možné řešení:
1. vyhledat nejmenší hodnotu v dané oblasti (funkce MIN)
2. tuto hodnotu vyhledat v daném řádku a uložit pozici sloupce (funkce POZVYHLEDAT)
3. uložit z horního řádku (jména obchodů) název (funkce POSUN)

Myslím, že vlastní učení pomůže více než jen někým napsat vzorce a ono to nějak funguje.


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

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse