Avatar billede apromis Praktikant
02. juni 2009 - 00:10 Der er 15 kommentarer og
1 løsning

Opdaterer efter dato

Hej alle.

Har via mit tidligere spørgsmål fået denne kode.
Men har to ark .
Data (hvor alt skrives)
Start (forsiden hvor denne funktion skal skrives).

Koden virker fint nok, men virker kun i det aktive sheet. Den skal tage dataen fra Date og udskrive i Start.

Hvordan gør jeg det?


Sub mcrSortData()
    'Variable
    Dim n As Double
    Dim varArk As String
   
    varArk = ActiveSheet.Name 'Navn på det aktive ark

    Range("A1").Select
    Selection.CurrentRegion.Select 'Marker området med data
   
    With Range("A1").CurrentRegion 'Find sidste Row
        n = .Rows(.Rows.Count).Row
    End With
   
    ActiveWorkbook.Worksheets(varArk).Sort.SortFields.Clear 'Fjern evt. aktiv sortering
    ActiveWorkbook.Worksheets(varArk).Sort.SortFields.Add Key:=Range("F1:F" & n), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   
    'Sortering
    With ActiveWorkbook.Worksheets(varArk).Sort
        .SetRange Range("A1:F" & n)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
   
    Range("A1").Select
End Sub
Avatar billede excelent Ekspert
02. juni 2009 - 20:00 #1
Sub mcrSortData()
    'Variable
    Dim n As Double
    Dim varArk As String
'-------------------------------------------------------------------
    Sheets("Data").Select
    rng = Range(Range("A1"), Range("A1").SpecialCells(xlLastCell)).Address
    Sheets("Data").Range(rng).Copy Sheets("Start").Range("A1")
    Sheets("Start").Select
'-------------------------------------------------------------------
    varArk = ActiveSheet.Name 'Navn på det aktive ark

    Range("A1").Select
    Selection.CurrentRegion.Select 'Marker området med data
   
    With Range("A1").CurrentRegion 'Find sidste Row
        n = .Rows(.Rows.Count).Row
    End With
   
    ActiveWorkbook.Worksheets(varArk).Sort.SortFields.Clear 'Fjern evt. aktiv sortering
    ActiveWorkbook.Worksheets(varArk).Sort.SortFields.Add Key:=Range("F1:F" & n), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   
    'Sortering
    With ActiveWorkbook.Worksheets(varArk).Sort
        .SetRange Range("A1:F" & n)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
   
    Range("A1").Select
End Sub
Avatar billede apromis Praktikant
02. juni 2009 - 22:30 #2
Hej Ven.

Det virker næsten.

Den sender dataen over i start, men den glemmer at sorte.
Den sorter pt således (samme orden som den stor i data) :
1. august 2009
1. juli 2009
1. september 2009

Og den skulle se således her ud :
1. juli 2009
1. august 2009
1. september 2009

På forhånd tak :)
Avatar billede apromis Praktikant
02. juni 2009 - 22:56 #3
Tror sku det virker. Linje 1 må bare ikke bruges. Kan man begrænse det til 10 ?
Avatar billede excelent Ekspert
03. juni 2009 - 21:30 #4
hvad mener du med begrænse til 10 ?

Er denne linie 1 ?
Sheets("Data").Select
Avatar billede apromis Praktikant
03. juni 2009 - 22:50 #5
Tænkte på den kun viser de 10 første der sorteret i start. Forstår du mig eller forklarer jeg dårligt :)

Nej mener at der må ikke stå noget i første række A1:F1 får den kommer ikke med. Men det betyder intet :)
Avatar billede excelent Ekspert
03. juni 2009 - 23:21 #6
Min del af koden kopierer alt fra ark "Data" til ark "Start"

Herefter gøres arket "Start" aktivt så den oprindelige kode foretager sorteringen der.

Så hvis der er noget galt med det, så må det jo have været galt fra starten af. ???
Avatar billede apromis Praktikant
04. juni 2009 - 23:10 #7
tror du har ret :) Virker fint nu. Ved du evt det med at begrænse til ti ?
Avatar billede excelent Ekspert
05. juni 2009 - 16:45 #8
Jeg ved ikke hvad du mener med begrænse til ti ?
Avatar billede apromis Praktikant
08. juni 2009 - 22:28 #9
Altså så den kun viser de 10 første :)
Avatar billede excelent Ekspert
09. juni 2009 - 05:48 #10
Med Autofilter (i menuen Data) er det muligt at vise de 10 første
Avatar billede apromis Praktikant
09. juni 2009 - 22:08 #11
Du får pointsne men vil stadig gerne have en loop på.

Tak for hjælpen PT. :)
Avatar billede excelent Ekspert
09. juni 2009 - 22:26 #12
Skal koden kun hente/kopiere de 10 første rækker fra Data til Start
Eller skal den kopiere som nu alt og derefter sortere og derefter slette alt undtagen de 10 første rækker eller hvad er det der skal laves ?
Avatar billede apromis Praktikant
09. juni 2009 - 22:33 #13
Den skal sortere alt og kun vise de første 10. Altså slette alt undtagen de første ti :)
Avatar billede excelent Ekspert
10. juni 2009 - 20:46 #14
Hvis du indsætter denne linie lige før End Sub
Range("A11:IV65536").Clear

så slettes alt fra række 11 til og med række 65536
ret 11 til aktuel første række der skal slettes

hvis første række er dynamisk må du sige til
Avatar billede excelent Ekspert
11. juni 2009 - 17:41 #15
Sig til hvis der skal ændres noget
Avatar billede apromis Praktikant
12. juni 2009 - 18:40 #16
Tak for hjlælpen :) Det smukt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester