Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Makro v Excelu - výběr oblasti

Ahoj, už dlouho se snažím dokopat k tomu, abych se trochu víc naučil s VBS, ale než na to dojde, dovolím si vás požádat ještě jednou o radu:

1. Mějme situaci jako na přiloženém obrázku (popisuje např. výdeje v táborové kuchyni):

[img=/file/view/384-xls-png]http://pc.poradna.net/file/view/384-xls-png[/img]

2. Úkolem je napsat makro, které z této tabulky vybere všechny řádky, které obsahují vyplněné všechny sloupečky a takto vybranou oblast následně pojmenuje např. "Oblast" (pojmenováním oblasti rozumím vepsání jejího názvu do políčka, které také vidíme na obrázku úplně vlevo nahoře, abychom si rozuměli.

3. Lze vycházet z následujících platných tvrzení:
- Tabulka bude mít vždy tři sloupečky a vždy platí, že pokud je něco napsáno ve sloupečku "A", tak bude vyplněný i sloupeček "B" a "C"
- Sloupeček "C" bude vždy svisle přečuhovat přes sloupečky "A" a "B"
- Tabulka nikdy nebude obsahovat prázdné řádky vložené mezi vyplněné řádky (lze tedy použít poslední buňku sloupečku "A" jako detekci konce oblasti)
- Před spuštěním makra lze umístit kurzor libovolně do tabulky
- Počet řádků je neznámý (a to je právě ten problém pro mě) a makro bude spouštěno v různých verzích stejného XLS s různým počtem řádků.

Výsledkem proběhnuvšího makra v tomto konkrétním případě by tedy měla být pojmenovaná oblast "Oblast", která v sobě bude obsahovat buňky A5:C18.

Používám Excel 2007 English ale předpokládám funkčnost i pro Excel 2003.

Děkuji mockrát.:beer:

Předmět Autor Datum
Takové věci řeš jednoduše - zakni zaznam makra, udělej, co potřebuješ a jdi do upravy makra. Tam to…
Jan Fiala 10.02.2009 14:11
Jan Fiala
Takyže to tak dělám, ale s tímhle mi záznam moc nepomohl. Nejsem ještě tak zběhlý, abych tam toto do… poslední
Moas 10.02.2009 14:37
Moas
Toto pouzivam na zistenie rozsahu tabulky ' Zisti rozsah tabulky(A1,xy) Range("A1").Select On Error…
mabrik 10.02.2009 14:23
mabrik

Toto pouzivam na zistenie rozsahu tabulky

' Zisti rozsah tabulky(A1,xy)
Range("A1").Select
On Error Resume Next
myLastRow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
mylastcolumn = Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column
myLastCell = Cells(myLastRow, mylastcolumn).Address
myrange = "a1:" & myLastCell

Zaujimave stranky k excelu:
http://www.dataspectrum.cz/pages/glossary/glossary .htm
http://www.angelfire.com/biz7/julian_s/julian/juli ans_macros.htm
http://www.dataspectrum.cz/pages/learning/learning main.htm

Zpět do poradny Odpovědět na původní otázku Nahoru