Stránka 1 z 1
Kopírování buněk
Napsal: 27 kvě 2011 14:23
od astary
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.
Re: Kopírování buněk
Napsal: 30 kvě 2011 09:29
od Poki
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...
Re: Kopírování buněk
Napsal: 30 kvě 2011 10:40
od astary
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?
Re: Kopírování buněk
Napsal: 30 kvě 2011 15:25
od Poki
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.
Re: Kopírování buněk
Napsal: 31 kvě 2011 09:02
od astary
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?
Re: Kopírování buněk
Napsal: 31 kvě 2011 09:30
od Poki
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...)
Re: Kopírování buněk
Napsal: 31 kvě 2011 10:16
od astary
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ů).
Re: Kopírování buněk
Napsal: 31 kvě 2011 14:17
od Poki
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
Re: Kopírování buněk Vyřešeno
Napsal: 31 kvě 2011 14:35
od astary
Super. To je ono. Mockrát děkuju za pomoc a trpělivost! Opravdu mi to hooooodně pomohlo!