Telefonszámunk: 1-472-0679

Nem összefüggő tartományok kijelölése VBA-ban

2012-12-18 - horvimi - Megtekintések száma: 2 833 - Kategória: Kijelölések, Macro-VBA, Tartományok kezelése
Hivatkozott Excel verzio:

Ha szükség lenne nem összefüggő tartományok kijelölésére, akkor ahhoz a union() metódust tudjuk használni. Általános szintaktikája:

dim eredmeny as range

set eredmeny = UNION(range 1, range 2, …range n)

eredmeny.select

Az egyes tartományokat külön-külön is megadhatjuk az egyesítéshez, de ha ezt előre nem tudjuk, akkor menet közben is felépíthetjük a dolgot úgy, hogy mindig az előző union-hoz adjuk hozzá az aktuális tartományt.

Második és negyedik oszlop kijelölése az aktív tartományban

[vb]

Sub union_1()
Dim oszlop1 As Range
Dim oszlop2 As Range

Set oszlop1 = Range(ActiveCell.CurrentRegion.Cells(2), _
ActiveCell.CurrentRegion.Cells(2).End(xlDown))

Set oszlop2 = Range(ActiveCell.CurrentRegion.Cells(4), _
ActiveCell.CurrentRegion.Cells(4).End(xlDown))

union(oszlop1, oszlop2).Select
End Sub

[/vb]

Az eredmény

Az aktív cellától kezdve minden második sor kijelölése a végéig

[vb]

Sub union_2()
Dim akt_sor As Range
Dim osszes_sor As Range
Dim uo As Integer
Dim us As Long
Dim vege As Boolean

‘Sor vége, azaz utolsó oszlop
uo = ActiveCell.CurrentRegion.SpecialCells(xlCellTypeLastCell).Column
‘Utolsó sor
us = ActiveCell.CurrentRegion.SpecialCells(xlCellTypeLastCell).Row

‘Első Aktualis sor kijelolése
Set akt_sor = Range(ActiveCell, Cells(ActiveCell.Row, uo))

‘Kezdetben az összes kijelölés egyenlő az első aktuális sorral
Set osszes_sor = akt_sor

vege = False
‘Ciklus, amíg a tartomány végéig nem érünk
While vege <> True

‘Két sorral lejjebb lépünk, és kijelöljük a következő sort
ActiveCell.Offset(2, 0).Select

Set akt_sor = Range(ActiveCell, Cells(ActiveCell.Row, uo))

‘Ha még nem értünk a végére
If ActiveCell.Row <= us Then
‘Összeadjuk az eddigi kijelöléseket és az aktuális sort
Set osszes_sor = union(osszes_sor, akt_sor)
Else
vege = True
End If
Wend

osszes_sor.Select

End Sub

[/vb]

Eredmény

Továbbiak

Az így kijelölt tartományokkal SELECTION néven dolgozhatunk tovább, megformázhatjuk, képlettel tölthetjük fel, törölhetjük, stb…

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