Telefonszámunk: 1-472-0679

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

2012-12-18 - horvimi - Megtekintések száma: 2,489 - 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


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


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

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?