• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Macro; kortere tekst mogelijk ?

Status
Niet open voor verdere reacties.

Evelthoven

Gebruiker
Lid geworden
26 sep 2006
Berichten
690
Goedemiddag,

Met de macrorecorder heb ik de volgende macro opgenomen. Mijn vraag is nu of deze tekst korter kan, of dat er misschien ook zaken weggelaten kunnen worden of anders opgeschreven. De macro werkt goed, maar ik wil er alleen maar van leren.

HTML:
Sub Sorteer_Dynalite()
'
' Sorteer_Dynalite Macro
'

'
    Application.Goto Reference:="DynaliteInvoer"
    ActiveWorkbook.Worksheets("Dynalite").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Dynalite").Sort.SortFields.Add Key:=Range( _
        "F2:F1293"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Dynalite").Sort.SortFields.Add Key:=Range( _
        "I2:I1293"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Dynalite").Sort
        .SetRange Range("A2:AB1293")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("B2").Select
End Sub

Alvast bedankt voor de reacties.

gr.
Eric
 
Code:
Sub Sorteer_Dynalite()
'
' Sorteer_Dynalite Macro
'
 
'
    Application.Goto Reference:="DynaliteInvoer"
    With ActiveWorkbook.Worksheets("Dynalite").Sort
        With .SortFields
            .Clear
            .Add Key:=Range("F2:F1293"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .Add Key:=Range("I2:I1293"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        End With
        .SetRange Range("A2:AB1293")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("B2").Select
End Sub
 
Hallo Rudi,

Je macro werkt bijna goed.
Echter hij selecteert tot en met rij 1293, maar het is juist de bedoeling dat hij iedere keer selecteert tot en met de laatste rij die in gebruik is.
Ik gebruik een dynamische naam voor de selectie, maar toch werkt die blijkbaar niet goed. Ik heb vanmorgen 2 regels toegevoegd (t/m 1295) maar deze worden niet meegenomen bij het sorteren.
Dit is de naam: =OFFSET(Dynalite!$D$2;0;-3;COUNTA(Dynalite!$D:$D);28)
Ik heb de naam gegeven DynaliteInvoer.

Ik zou graag het bestand meesturen, maar deze is helaas veel te groot.

Op het laatst van de macro gaat hij naar cel B2. Wat ik liever zou hebben is dat hij naar de laatste cel gaat die in kolom F in gebruik is.

Heb je nog ideeen ?

Gr.
Eric
 
Dit lijkt me genoeg:

Code:
Sub snb()
    with ActiveWorkbook.sheets("Dynalite")
       .cells(1).currentregion.Sort .cells(1,6),,.cells(1,9),,,,,xlYes
    end with
End Sub
 
Laatst bewerkt:
Hallo,

Het probleem met het vinden van de laatste gebruikte cel in kolom F heb ik inmiddels al zelf kunnen oplossen.
Dit doe ik met de volgende regel in de macro:

HTML:
Range("F65536").End(xlUp).Select

Hopelijk wordt de rest van de vraag ook nog opgelost.

Gr.
Eric
 
Dag SNB,

Ik heb je code getest en het werkt perfect !
Doet precies wat ik graag wil.
Omdat ik ervan wil leren de volgende vraag: kun je me aub. in stappen uitleggen wat er met deze macro nu precies gebeurt ?

Alvast bedankt.
Eric
 
In de VBEditor van excel 2003 kun je in de hulpbestanden zoeken op de termen:

- currentregion
- sort (Methode)
- cells

Het is een beetje dubbelop als je je eigen documentatie onder handbereik hebt, dat ik dan die tekst hier nog eens hier ga opschrijven.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan