Avatar billede apromis Praktikant
25. maj 2009 - 22:34 Der er 10 kommentarer og
1 løsning

VBA : List efter dato

Hej Alle sammen.

Skal lige sige jeg ikke stærk i VBA så skal gå lidt langsomt.

Har to Sheets : Start & Data

Data's data ser således ud :
A kolone : Navn på opgaven
B, c, d og e er nogle tjek bokse og noget kommentar værk
F indeholder en dato : f.eks 20-06-2009

I Start skal den sortere alle disse data efter dato tættest på. (ved tryk på en knap).
De vigtigste informationer skal med a,b,f og vil gerne kunne udvide, så der må gerne være forklaring på VBA koden.

Det skal være sådan, at hvis man ændre værdien i Start ang en ja/nej (b) skal den slå igennem og ændre på Data også.

Er der nogle som kan hjælpe mig videre med denne her ?

På forhånd tak :)
Avatar billede hellstern Nybegynder
26. maj 2009 - 08:09 #1
Hej,
Jeg ved ikke om det er mig der bare er tungnem eller ;-)
Men hvorfor laver du ikke bare sorteringe i Data arket
hvorfor skal data "flyttes" over i Start arket?

Det at du vil kunne ændre fra Start arket "tilbge" til Data arket gør det lidt svært. Er Kolonen A unik?

Hilsen
Tue Hellstern
www.F1-support.dk
Avatar billede apromis Praktikant
26. maj 2009 - 10:10 #2
Hej Hellstern.

Jeg ønsker det fremtidig skal ske automatisk, så derfor er jeg nød til at have denne måde :)
Avatar billede hellstern Nybegynder
26. maj 2009 - 14:50 #3
Ok, men kunne det ikke ske automatisk i Data arket?

Der kunne oprettes en makro der automatisk sorterede dette ark hver gang der kom en ændring?

Hilsen
Tue Hellstern
www.F1-support.dk
Avatar billede apromis Praktikant
26. maj 2009 - 18:32 #4
Hmm hvad med en knap, det ville være bedst :)

Hvordan havde du tænkt dig ?
Avatar billede hellstern Nybegynder
26. maj 2009 - 19:43 #5
Hej,
Denne makro sortere det aktive ark - i dit tilfælde Data arket.
Der bliver sorteret efter F med nyeste Dato øverst.

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:=xlDescending, DataOption:=xlSortNormal
   
    'Sortering
    With ActiveWorkbook.Worksheets(varArk).Sort
        .SetRange Range("F1:F" & n)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
   
    Range("A1").Select
End Sub

Du kan evt. binde denne knap sammen med en knap.

Test makroen og lad mig vide om det er den noget i den retning du har brug for.

Hilsen
Tue Hellstern
www.F1-support.dk
Avatar billede apromis Praktikant
26. maj 2009 - 19:54 #6
Det er lidt vigtigt det kommer fra et andet ark. Kan vi lave det ?

Tester lige din kode senere :)
Avatar billede hellstern Nybegynder
26. maj 2009 - 19:56 #7
Hej,
Ikke helt sikker på hvad du mener :-)
Hvad er det der kommer fra et andet ark?

/Tue
Avatar billede apromis Praktikant
26. maj 2009 - 22:06 #8
Det nok mig som forklarer mig dårligt. Det er samme ark, men to forskellige sheets.

Det vigtigt at alt uden sortering ligger i sheetet data.

Derefter skal det sorteres i arket start.

Forstår du mig bedre nu ? :)
Avatar billede apromis Praktikant
26. maj 2009 - 22:17 #9
Har kigget lidt på koden. Den sorter kun F. Den skal tage alt fra a-f med. Desuden skriver den den højeste værdi i toppen, det skal være det den laveste. Altså den dato der tættest på dagens dato :)
Avatar billede apromis Praktikant
26. maj 2009 - 22:34 #10
Er kommet lidt videre :

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 apromis Praktikant
04. august 2010 - 21:40 #11
Jeg takker for jhælpen.
Vil du have points så skriv, er nød til at lukke mine åbne spm.
Så opretter jeg en tråd til dig :)
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