Dobrý den,
potřeboval bych pomoct s makrem. Chtěl bych proceduru, která by kopírovala hodnoty z jednoho listu do druhého, ale aby odkazy na vstupní i cílové buňky byly řešené odkazem (jejich umístění se může měnit a nerad bych to potom dohledával přímo v proceduře).
Momentálně mi funguje procedura "lepší makro record", kdy to pro každé kopírování vstupní a vložení do výstupní buňky mám jeden proces, což celou proceduru kódově dost roztahuje.
V příloze je ukázkový soubor. Není to nic složitého. Prostě vezme zažlutěná buňka (např. Vstup 1) na listu "Vstupy" a nakopíruje se do listu "Výstupy" do zažlutěné buňky "Výstup 1". Tzn. Vstupu 1 je přiřazená konkrétní výstupní buňka Výstup1.
Moje představa je, že bych měl všechny odkazy na vstupní a výstupní buňky jako proměnné. Z nich bych vytvořil dvě množiny a proceduře řekl, že pro každou položku v množině vstupních buněk má provést kopírování a potom vložení do konkrétní výstupní (cílové buňky). Nejsem ten cyklus ale schopný naprogramovat
Předem díky za pomoc.
Kopírování buněk Vyřešeno
Kopírování buněk
- Přílohy
-
- demo.xlsx
- (7.95 KiB) Staženo 26 x
Re: Kopírování buněk
V prilozenem souboru jsem nenasel zadne makro (asi proto, ze soubor .xlsx nepodporuje makra), tak jsem uplne nevedel, co presne ma to makro delat.
Zkusil jsem neco vytvorit, podivejte se do prilohy, treba to bude ono...
Zkusil jsem neco vytvorit, podivejte se do prilohy, treba to bude ono...
- Přílohy
-
- demo.xlsm
- (15.25 KiB) Staženo 38 x
Re: Kopírování buněk
Omluva za nepřesné zadání.
V příloze je soubor i s ukázkou, jak to mám momentálně napsané já (v komentářích).
Jde mi o to, jestli se dá ze všech vstupních buněk definovat skupina, která bude každé vstupní buňce přiřazovat právě jednu konkrétní výstupní a pak jenom nějakému cyklu říct, ber jednu vstupní buňku za druhou kopíruj hodnoty do výstupních buněk na základě definované množiny (skupiny).
Jde něco takového naprogramovat?
V příloze je soubor i s ukázkou, jak to mám momentálně napsané já (v komentářích).
Jde mi o to, jestli se dá ze všech vstupních buněk definovat skupina, která bude každé vstupní buňce přiřazovat právě jednu konkrétní výstupní a pak jenom nějakému cyklu říct, ber jednu vstupní buňku za druhou kopíruj hodnoty do výstupních buněk na základě definované množiny (skupiny).
Jde něco takového naprogramovat?
- Přílohy
-
- demo_v1.xlsm
- (15.39 KiB) Staženo 18 x
Re: Kopírování buněk
No, pokud si chcete rucne napsat, v jakych bunkach ty hodnoty maji byt, tak to jde udelat pres pole, kde si odpovdaji vzdy hodnoty podle indexu.
- Přílohy
-
- demo_v1.xlsm
- (15.54 KiB) Staženo 37 x
Re: Kopírování buněk
Super. S pevně daným cílem to funguje. Není to sice o tolik rychlejší, než zápis bez cyklu (měl jsem velké oči) , ale kód je asi tak o 100% přehlednější. Takže tisíceré díky.
Ještě jsem zkusil jednu variantu zápisu pro jiné makro, které by nemělo přesně definované výstupní buňky, ale kopírovalo by hodnoty do první prázdné buňky v určitém sloupci.
Bohužel mi to hází chybu: 1004: Application-defined or object-defined error a zažlutí to řádek s kopírováním hodnot do cílévého listu a sloupce.
Už jste mi pomohl pravděpodobně stejnou chybu odstranit v jiném příspěvku (viewtopic.php?f=35&t=67989), tak jsem zkusil stejný postup, ale chyba nezmizela. Netušíte, čím to může být?
Ještě jsem zkusil jednu variantu zápisu pro jiné makro, které by nemělo přesně definované výstupní buňky, ale kopírovalo by hodnoty do první prázdné buňky v určitém sloupci.
Bohužel mi to hází chybu: 1004: Application-defined or object-defined error a zažlutí to řádek s kopírováním hodnot do cílévého listu a sloupce.
Už jste mi pomohl pravděpodobně stejnou chybu odstranit v jiném příspěvku (viewtopic.php?f=35&t=67989), tak jsem zkusil stejný postup, ale chyba nezmizela. Netušíte, čím to může být?
- Přílohy
-
- demo_v2.xlsm
- (15.84 KiB) Staženo 11 x
Re: Kopírování buněk
No - vidim, ze porad pouzivate metody .Copy a .Paste - tady byste mel vedet, ze pokud chcete 'kopirovat' jen jednu bunku, nema to smysl.
Tyto metody totiz funguji pouze na aktivnim listu, to znamena, ze kdyz chcete kopirovat bunku na listu Vstupy, musite ho mit aktivni 'Worksheets("Vstupy").Activate' a pote vlozit na list list Vystupy (opet musite zaktivnit list Vystupy).
Mnohem vyhodnejsi je pouzit jen proste prirazeni hodnoty: 'Worksheets("Vystupy").range("a1") = 'Worksheets("Vstupy").Range("b2") - tento kod priradi do bunky A1 na listu Vystupy stejnou hodnotu, ktera je v bunce B2 na listu Vstupy.
Pro doplnovani hodnot do vzdy nasledujici prazdne bunky ve sloupci je vhodnejsi pouzit Cells(65000,2).end(xlUp).Row+1 (65000 proto, aby to fungovalo i v Excelu 2003, kde je jen neco malo pres 65 000 radku).
Vyhodnejsi je to proto, ze pokud hledate konec oblasti (.End(xlDown)) zhora a zacinate prvnim radkem, ktery je obsazeny (druhy uz ale neni), naleznete posledni radek listu (pod nim uz zadne dalsi radky nejsou a prijde chyba...)
Tyto metody totiz funguji pouze na aktivnim listu, to znamena, ze kdyz chcete kopirovat bunku na listu Vstupy, musite ho mit aktivni 'Worksheets("Vstupy").Activate' a pote vlozit na list list Vystupy (opet musite zaktivnit list Vystupy).
Mnohem vyhodnejsi je pouzit jen proste prirazeni hodnoty: 'Worksheets("Vystupy").range("a1") = 'Worksheets("Vstupy").Range("b2") - tento kod priradi do bunky A1 na listu Vystupy stejnou hodnotu, ktera je v bunce B2 na listu Vstupy.
Pro doplnovani hodnot do vzdy nasledujici prazdne bunky ve sloupci je vhodnejsi pouzit Cells(65000,2).end(xlUp).Row+1 (65000 proto, aby to fungovalo i v Excelu 2003, kde je jen neco malo pres 65 000 radku).
Vyhodnejsi je to proto, ze pokud hledate konec oblasti (.End(xlDown)) zhora a zacinate prvnim radkem, ktery je obsazeny (druhy uz ale neni), naleznete posledni radek listu (pod nim uz zadne dalsi radky nejsou a prijde chyba...)
- Přílohy
-
- demo_v2.xlsm
- (15.8 KiB) Staženo 24 x
Re: Kopírování buněk
Děkuju za info. Já bych klidně použil to přiřazení, ale budu potřebovat kopírovat nejen jednu buňku, ale i oblast a tam už mi to přiřazení nefungovalo. Bohužel nefunguje ani copy/paste se zaktivněním listů (v příloze) :-/ Procedura je schopná najít cílové buňky, ale už není schopná tam vložit hodnoty. Na to se to šprajcne
S tím hledáním prázdné buňky děkuju. Sice v tom finálním souboru pod hlavičkou tabulky s hodnotami už budou jen jeden záznam za druhým (žádná prázdná buňka), ale nemusím mu říkat, na kterém řádku je hlavička (kdyby se náhodou posunula nahoru/dolů).
S tím hledáním prázdné buňky děkuju. Sice v tom finálním souboru pod hlavičkou tabulky s hodnotami už budou jen jeden záznam za druhým (žádná prázdná buňka), ale nemusím mu říkat, na kterém řádku je hlavička (kdyby se náhodou posunula nahoru/dolů).
- Přílohy
-
- demo_v3.xlsm
- (16.16 KiB) Staženo 13 x
Re: Kopírování buněk
Tak tedy kopirovani:
Pokud chcete pouzit .Copy - musite nejdriv bunky vybrat pomoci .Select (na aktivnim liste)
pro vlozeni musite udelat to stejne, vybrat prvni bunku oblasti, kam se ma vlozit zkopirovana oblast (.Select) a pak vlozit pomoci: ActiveSheet.Paste
Pokud chcete pouzit .Copy - musite nejdriv bunky vybrat pomoci .Select (na aktivnim liste)
pro vlozeni musite udelat to stejne, vybrat prvni bunku oblasti, kam se ma vlozit zkopirovana oblast (.Select) a pak vlozit pomoci: ActiveSheet.Paste
- Přílohy
-
- demo_v3.xlsm
- (15.3 KiB) Staženo 83 x
Re: Kopírování buněk Vyřešeno
Super. To je ono. Mockrát děkuju za pomoc a trpělivost! Opravdu mi to hooooodně pomohlo!
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 3
- 2145
-
od Melvidor
Zobrazit poslední příspěvek
21 črc 2023 08:41
-
-
Obnoveni ztracenych fotek z telefonu pri kopirovani do pc
od Dizzy66 » 21 led 2024 17:08 » v Vše ostatní (sw) - 2
- 1372
-
od šulda
Zobrazit poslední příspěvek
23 úno 2024 07:12
-
-
-
Kontrola kopírování dat z jednoho disku na druhý Příloha(y)
od orfan » 25 dub 2024 11:59 » v Vše ostatní (sw) - 15
- 1112
-
od orfan
Zobrazit poslední příspěvek
25 dub 2024 19:51
-
-
-
Libre Office Calc - Divné chování při kopírování textu Příloha(y)
od EZumrova » 02 dub 2024 08:12 » v Kancelářské balíky - 14
- 2269
-
od kecalek
Zobrazit poslední příspěvek
05 dub 2024 19:11
-
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti