Těžko radit - málo vstupních údajů (co je pevně dané, co se může měnit, co je před výpočtem, co po výpočtu)Ale aspoň něco.U slovíčka RANGE ve VB mám zkušenost, že nemá rád jako parametr proměnnou.Ale u CELL už to tolik nevadí.Příklad:zadefinuješ NBuď zapíšeš CELLS(N, 1).Select - pro buňkunebo Range(Cells(N, 1), Cells(N, 5)).Select - pro oblastN se dá výhodně přiřadit příkazem pro pozdější tvoje využitíN = Selection.Row (adresa řádku označené buňky)Potom třeba výběr oblasti (asi jen řádku - z tvého zadání není zřejmé) by bylo:Range(Cells(N, 6), Cells(N, ?)).SelectOtazník mám, protože zase nevím ze zadání, jestli je vždy výběr stejně "široký" - má konstantní počet sloupců.A teď k tvému bodu 2 a jeho řešení:sice chceš přesně zápis a ne doporučení - stejně ti dám jen doporučení,(není nad pocit vyřešeného problému vlastní pílí a dal jsi málo informací)Silně záleží při řešení na tom, zda výsledky předchozího řádku ovlivňují vstupy dalšího řádku, nebo data na 2.listě jsou jen vstupní neměnné a vedle nich budou výsledky ovlivněné vzorci z 1. listu.Zatím pro tu jednodušší verziV zadání píšeš, že znáš počet řádků oblasti na 2.listě (třeba to bude X)a pozici počátečního řádku (bude třeba N)Část těla makra:na PRVNÍM listě označit pozici, kam se bude vkládat 1. oblastna druhém listě označit pozici 1. vybrané oblastiN = Selection.Rowaktivace listu 2z výše uvedených příkladů označíš a zkopíruješ na 2. listě "svoji" oblast příkazemRange(Cells(N, ?), Cells(N+X, ?)).Copy (otazníky si doplň sám)aktivace listu 1vložení nakopírované oblasti (.PASTE)