Telefonszámunk: 1-472-0679

Nem összefüggő kijelölések bejárása VBA-ban

2012-12-18 - horvimi - Kategória: Macro-VBA, Tartományok kezelése
Hivatkozott Excel verzio:

Az Excel használata közben többféleképpen keletkezhetnek nem összefüggő tartományok:

  • Mi jelöljük ki a Ctrl billentyűvel
  • Szűréssel keletkeznek
  • Speciális kijelölést használunk, pl.: Az összes képletet tartalmazó cella kijelölése
  • VBA kódból jelölünk ki nem összefüggően (lásd itt)
  • Egyéb ?

Akármilyen módon is keletkeztek a tartományok, a kezelésük már nem annyira egyszerű, sőt, bizonyos műveletek nem megengedettek ilyen kijelöléskor. Például nem lehet beilleszteni értékeket a vágólapról.

Elméleti háttér

Ha több tartományt jelölünk ki, akkor a kijelölésen (Selection) belül létrejön egy új kollekció „AREAS” (területek) néven. Próbáljuk ki, hogy kijelölünk néhány nem összefüggő tartományt CTRL lenyomásával, majd az Immedate ablakba beirjuk:

?Selection.areas.count

Válaszként megkapjuk, hogy hány tartományt jelöltünk ki. A képen látható, hogy három tartomány kijelölése után milyen választ kaptunk.

A gyűjtemény egyes területeire a SELECTION.AREAS(n) módon lehet hivatkozni.

A területek (areas) bejárása

Mivel ez is egy kollekció, a bejárásához legegyszerűbben egy for each ciklust lehet használni. A példában a kijelölt területek celláinak a számát írjuk ki egy üzenőboxba. A kód futtatása előtt legyen kijelölve legalább kettő, de jobb, ha több tartomány.

[vb]

Sub areas()
Dim r As Range

‘A keletkezett tartományok (areas) bejárása
For Each r In Selection.Areas
r.Select
msgbox selection.cells.count
Next

End Sub

[/vb]

Vélemény, hozzászólás?