EXCEL: Vymazání určité oblasti

Programy pro práci s textem, tabulkami, prezentacemi

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Mistr81 11. 2. 2010 10:50

Přeji pěkný den,

v Excelu 2003 bych chtěl pomocí VBA vymazat hodnoty v buňkách umístěných v obdélníku, jehož
  • levá horní buňka má souřadnice (3, 1)
  • pravá dolní buňka má souřadnice (u, 6)
To u je proměnná hodnota odvislá od toho, kolik bude vyplněných řádků. Vždy ale bude tabulka začínat na třetím řádku.

Zkoušel jsem to přes kód
Kód: Vybrat vše
List9.Range(Cells(3, 1), Cells(u, 6)).Select
    Selection.ClearContents

leč vždy se mi zobrazila hláška
Obrázek
a v kódu se zvýrazní řádek
Kód: Vybrat vše
List9.Range(Cells(3, 1), Cells(u, 6)).Select


Poradíte mi, prosím, v čem je problém?

Děkuji.
Nechval dne před večerem...
Mistr81
Junior
Uživatelský avatar

Odeslat příspěvekod obcasny_navstevnik 11. 2. 2010 13:14

Uz v tematu viewtopic.php?f=958&t=1076210 jsi mel problemy s nazvy listu, a uvadel jsem ti:
Neni to jedno.
List3.Select - je vybran objekt List3("nejakynazev"), koukni v editoru VBA na pole Project - VBAProject

Worksheets("Ahoj").Select - je vybran list s nazvem "Ahoj" bez ohledu na jeho poradi v okne Excelu

Worksheets(1).Select - je vybral list, ktery je v okne Excelu v poradi prvni zleva (bez ohledu na jeho nazev nebo objekt)

Pokud chces pouzit objekt List9, nejprve musis v teto programove konstrukci tento objekt vybrat a pak vybrat blok bunek:
Kód: Vybrat vše
List9.Select
Range(Cells(3, 1), Cells(u, 6)).Select
    Selection.ClearContents

Navic tato konstrukce bude adresovat blok bunek takto:
u=1 > $A$1:$F$3
u=2 > $A$2:$F$3
u=3 > $A$3:$F$3
...
u=6 > $A$3:$F$6
coz asi nechces; jiste to lze upravit (a take zjednodusit: Range(Cells(3, 1), Cells(u, 6)).ClearContents), ale VBA je objektove orientovany, tak to vyuzij :
Kód: Vybrat vše
Dim Blk As Range
...
Set Blk = Worksheets("list3").Range("a3") ' zaciname na radku 3 ve sloupci A
Blk.Resize(u, 6).ClearContents ' odstrani blok s u radky a 6 sloupci: A3:F(3+u-1)
...
Set Blk = Nothing ' odstranit objektovou promennou z pameti

a podle nazvu listu vim, kde jsem.
obcasny_navstevnik
Junior

Odeslat příspěvekod Mistr81 12. 2. 2010 09:26

Občasný návštěvníku, díky.

Holt jsem tam neměl ten řádek List9.Select :-(

Nakonec jsem to však udělal tím Tvým návrhem kódu, který efektně funguje. Díky za to.
Nechval dne před večerem...
Mistr81
Junior
Uživatelský avatar

Odeslat příspěvekod petrfilipi 20. 2. 2010 10:50

Pokud mi něco ve VBA nefunguje, tak to zkusím vytvořít pomocí Záznamu makra a pak se podívám, jak je to makro napsané a tu potřebnou část kódu zkopíruji do svého makra.

Petr Filipi
petrfilipi
Junior

Odeslat příspěvekod Mistr81 20. 2. 2010 11:01

petrfilipi píše:Pokud mi něco ve VBA nefunguje, tak to zkusím vytvořít pomocí Záznamu makra a pak se podívám, jak je to makro napsané a tu potřebnou část kódu zkopíruji do svého makra.

Ano, po dřívějším upozornění na tuto skutečnost Občasným návštěvníkem, volím stejný postup.
Nechval dne před večerem...
Mistr81
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků

cron