Avatar billede svaage Nybegynder
08. maj 2004 - 15:33 Der er 15 kommentarer og
2 løsninger

Sortering af rækker

Nedenfor er et område, hvor række 2,5,6 er tomme,
1  a  b
2
3  c  d  e
4  f  g
5
6
7  h  i  j

hvordan kan jeg sortere,vha. vba, så de tomme rækker kommer til at ligge nederst? dvs som nedestående



1  a  b
3  c  d  e
4  f  g
7  h  i  j
2
5
6


Hilsen Sv@@ge
Avatar billede sjap Praktikant
08. maj 2004 - 15:54 #1
Hvad er der galt med den almidelige sorteringsfunktion? Nå jeg trykker på pilene, så ender det som du beskriver!
Avatar billede svaage Nybegynder
08. maj 2004 - 16:00 #2
problemet er at den gerne skulle gøre det automatisk dvs uden at trykke på nogle knapper
Avatar billede sjap Praktikant
08. maj 2004 - 16:02 #3
Hvordan lige det? Du er jo nødt til at aktivere den på en eller anden måde.
Avatar billede sjap Praktikant
08. maj 2004 - 16:03 #4
Åh. Er den en del af en makro?
Avatar billede sjap Praktikant
08. maj 2004 - 16:06 #5
I en macro kan det gøres med

Range("C1:D7").Select
Range("D1").Activate
Selection.Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Hvor celle C1:D7 er dit område og D1 er den øverste celle i kolonnen med de data du vil sortere efter.
Avatar billede svaage Nybegynder
08. maj 2004 - 16:31 #6
Det kan godt være at jeg ikke har udtrykt mig klart nok og det undskylder jeg natruligvis, det handler om at brugerne kan indtaste forskellige værdier i nogle celler, og ikke alle celler bliver der nødvendigvis skrevet i hver gang, men brugeren skal efterfølgende have mulighed for at ændre værdierne og derved have en anden sortering, dvs. sorteringen skal ske hver gang brugeren har indtastet nye værdier, de sorterede værdier ryger over pået andet ark. Den indtastede værdi er ikke tal, men kommasepareret tekst, jeg ønsker som ovenfor beskrevet at tomme linier i celleområdet skal stå nederst efter en sortering, håber at dette kan hjælpe på at anskueliggøre mit problem.

hilsen Sv@@ge
Avatar billede sjap Praktikant
08. maj 2004 - 17:19 #7
Tjah Svaage, nu skulle jeg have noget klar:

I det modul, der hører til regnearket placerer du følgende lille programstump

Sub MoveSort()

    Application.ScreenUpdating = False
    Range("C1:D7").Select
    Selection.Copy
    Sheets("Ark2").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1:B7").Select
    Range("B1").Activate
    Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Range("B1").Select
    Sheets("Ark1").Select
    Range("A1").Select
    Application.ScreenUpdating = True
   
End Sub

Og i selve det regneark, hvor brugeren indlæser data, skal du indlæse følgende funktion.

Private Sub Worksheet_Change(ByVal Target As Range)

    Call MoveSort
   
End Sub
Avatar billede sjap Praktikant
08. maj 2004 - 17:22 #8
Du skal lige være opmærksom på følgende:

Ovenstående kopierer celler fra Ark1!C1:D7 og placere dem i Ark2 begyndende i celle A1.
I Ark2 sorteres A1:B7 efter indholdet af kolonne B.
Når koden er afviklet, placeres markøren i ark2 i celle B1 og i Ark1 i celle A1. Ark2 ses ikke i forbindelse med afviklingen af programmet.
Avatar billede svaage Nybegynder
08. maj 2004 - 17:32 #9
den meddeles en fejl " Metoden Select for klassen Range mislykkedes " og den debugger en fejl i linien "  Range("A1").Select "
Avatar billede sjap Praktikant
08. maj 2004 - 17:37 #10
Det lyder mystisk. Koden fungerer fint her.

Kan det mon skyldes at du har placeret koden forkert? Koden for Worksheet_Change SKAL ligge i brugerens ark, og MoveSort SKAL ligge i det generelle ark (findes typisk under "Moduler" med navnet Modul1). Hvis du placerer MoveSort i arkets kode virker det ikke.
Avatar billede svaage Nybegynder
08. maj 2004 - 17:41 #11
skal Call Movesort ligge i mappen this Workbook eller ? jeg kan ikke finde nogen Modul1
Avatar billede sjap Praktikant
08. maj 2004 - 17:50 #12
Nej. Du skal finde hvor der står VBAProject(dit regnearknavn). Herunder er en gul mappe med navnet "Microsoft Excel Objekter" (hvorunder alle dine regneark og "ThisWorkbook" ligger). Højreklik med musen VBAProject(dit regnearknavn) og vælg "Indsæt" og "Modul". Så indsætter programmet "Moduler" og herunder Modul1.
Avatar billede svaage Nybegynder
08. maj 2004 - 18:19 #13
har du mulighed for at sende arket til mig så jeg kan se hvad det er du gør ? så kan jeg muligvis fejlfinde på mit ark, vender tilbage skal lige spise med familien
du kan sende på sv.kir@ci.kk.dk
Avatar billede svaage Nybegynder
08. maj 2004 - 19:38 #14
Jeg har nu fået det til at virke, jeg havde byttet om på placeringen af de 2 koder, så nu er det på plads, der er dog opstået et nyt lille problem. Når funktionen kopiere data over på ark 2, skriver den at den mangler en reference og kan det skyldes at der hvor den kopierer oplysninger fra er ikke værdien af et tal men en reference til en anden celle, så hvordan får jeg den rigtige værdi til at stå uden reference til en anden celle. Det kan lade sig gøre ved at kopiere cellen og Indsæt speciel og kunne indsætte "værdier", men dette må kunne gøres med en formel eller en lille bid VBA-kode eller hvad ?
Avatar billede sjap Praktikant
08. maj 2004 - 19:44 #15
Du erstatter blot
ActiveSheet.Paste

med
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Avatar billede svaage Nybegynder
08. maj 2004 - 21:27 #16
Hej Superjab mange tak for din hjælp til dette spørgsmål, nu fungerer det bare som det skal, så du får nogle point
Avatar billede sjap Praktikant
08. maj 2004 - 21:56 #17
Pænt tak.
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