Hirdetés

Keresés

Új hozzászólás Aktív témák

  • m.zmrzlina

    senior tag

    válasz gigi183 #10542 üzenetére

    A cellák szétválasztására (ha nem csak egyetlen oszlopról van szó) itt egy másik megoldás:

    Sub unmerge_v2()
    Dim sor As Integer, oszlop As Integer

    sor = Selection.Rows.Count 'kijelölt tartomány mérete
    oszlop = Selection.Columns.Count 'köszönet érte Fire-nek :-)

    For j = 1 To sor

    For i = 1 To oszlop

    ActiveCell.unmerge 'cellák szétválasztása
    Selection.FormulaR1C1 = ActiveCell.Value 'üres cellák értéke = aktívcella értéke
    ActiveCell.Offset(0, 1).Select 'eggyel jobbra

    Next

    ActiveCell.Offset(1, -oszlop).Select 'vissza a sor elejére

    Next

    End Sub

    Arra figyelj, hogy amikor elindul a makró akkor legyen kijelölve a teljes tartomány amiben szétválasztandó celláid vannak.

    Természetesen ez a kód is gyorsabban lefut letiltott képernyőfrissítéssel.

  • m.zmrzlina

    senior tag

    válasz gigi183 #10542 üzenetére

    Örülök ha működik, ha valami gond van jelezd! :)

    A másik problémád megoldására egy ilyesmiből érdemes kiindulni:

    Sub unmerge()
    Application.ScreenUpdating = False

    Range("B1048576").End(xlup).Select 'beáll az B oszlop utolsó cellájába
    Do Until ActiveCell.Value = "Name" 'ciklus amíg fel nem ér a fejlécig

    ActiveCell.unmerge 'cellák szétválasztása
    Selection.FormulaR1C1 = ActiveCell.Value 'üres cellák értéke = aktívcella értéke

    ActiveCell.Offset(-1, 0).Select 'egy cellát fel
    Loop

    Application.ScreenUpdating = True
    End Sub

    A lényeg a ciklusmagban lévő első két sor. Természetesen ha más a tartomány vagy a kilépési feltétel akkor át kell írni de a szétválasztás és a kitöltés szerintem így működhet.

    Én a #10537-ben lévő táblázat B oszlopában lévő összevont cellákon teszteltem.

    Majd pontosíts!

Új hozzászólás Aktív témák