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
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?
Hozzászólás küldéséhez be kell jelentkezni.