< návrat zpět
MS Excel
Téma: Range (xx) = range(yy)
Zaslal/a chipoun 8.6.2011 12:20
Zdravím,
potřebocval bych poradit. Mám makro pracující s 2 dokumenty. Najde v záhlaví tabulky číslo sloupce a zkopíruje data ze sloupce do prvního dokumentu do stejného sloupce. Vše funguje, pokud používám copy a paste. Chtěl bych však jednoduše napsat že range = range, ale nefunguje mi to. Přitom když jsem na zkoušku napsal Range(Cells(1, 1), Cells(3, 3)) = Range(Cells(4, 4), Cells(6, 6)).Value
tak makro funguje. Když ale použiji skutečné adresy co potřebuji a napíšu kód Workbooks(CIL).Worksheets(listcil).Range(Cells(spodniradekcil, i), Cells(spodniradekcil + spodniradekzdroje - 2, i)) = Workbooks(ZDROJ).Worksheets(listzdr).Range(Cells(2, sloupec), Cells(spodniradekzdroje, sloupec)).Value
tak makro nefunguje. Vážne nevím kde může být zádrhel. Už se s tím peru 2 dny.
Roman(8.6.2011 16:40)#005208 Já osobně nastavení Range(Cells(1, 1), Cells(3, 3)) velmi nerad používám, je sice jednoduché ale offset je skoro stejný, ale má velkou nevýhodu platí jen na aktivním listu, v popisu je taková malá noticka, co se snadno přehledne a jiného to nenapadne. Je to stejné jako zadání objektu např List1!A1 pokud nejsi na Listu1 objekt se nepřiřadí (alespoň to je má zkušenost). Pokud chceš použít tebou uvedenou notaci musíš být na aktivním listu tak jak je např. paste a zadat
a = Range(Cells(1, 1), Cells(3, 3)).Address
b = Range(Cells(4, 4), Cells(6, 6)).Address
Sheets(2).Range(a) = Sheets(1).Range(b).Value
Sheets(1).Range(b).Copy Sheets(2).Range(a)
lepší je použít copy stačí levá horní buňka a nevím to jsem netestoval, zda nejsou problémy s = mezi sešitama, když to otestuješ napiš
citovat