Hej!
Precis som Rambo skriver så behövs det ett makro.
Vet du hur man spelar in ett makro? I så fall spela in ett makro och notera dess namn. Låt oss anta att det heter Makro1.
Direkt efter inspelningen börjat markerar du din tabell + ett antal extra rader under. Därefter sorterar du på önskat sätt och avslutar sedan inspelningen.
Lägg till någon rad och testa att köra makrot och se att det sorterar rätt.
Nu kan du köra ett makro för hand, men hur göra det automatiskt?
Förslagsvis gör du så här:
1. Tryck [Alt] + [F11] så får du upp kodredigeringen.
2. Uppe till vänster ser du mappen "Microsoft Excell objekt" och i den det ark som du har din lista i. Dubbelklicka på arkets namn.
3. Du får nu se koden för ditt ark, som är tom och skulle visas i den stora rutan till höger, om den inte vore tom...
4. Skriv nu koden nedan
Private Sub Worksheet_Change(ByVal Target As Range)
msgbox("Hej världen")
End Sub
5. Växla fönster till kalkylbladen och till det ark du valde i punkt 2. Ändra något i sidan och byt cell. Du ser nu texten "Hej världen"
6. Att sortera nu är INTE bra för en sortering är en förändring och skulle koden sortera sig när det sker en sortering så skulle sorteringen dra igång en sortering som drar igång en sortering som drar igång en sortering..... Lägg därför till en rad ovanför och under den mellersta raden:
Application.EnableEvents = False
MsgBox ("Hej världen")
Application.EnableEvents = True
7. Nu visas Hej världen om du testar, men vi skall istället anropa makrot du skapade i punkt 1. Ändra därför koden till. (Ha gärna kvar MsgBox-en för kontrolls skull.
Application.EnableEvents = False
call Makro1()
Application.EnableEvents = True
8. Sorteringen flyttar dock fokus till någon annan cell, det är inte bra. Därför gäller det att hålla reda på cellen vi vill hamna i. Vi skapar x som pekar på cellen vi markerat, den aktiva cellen och väljer den igen när vi sorterat:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As Range
Set x = ActiveCell
Application.EnableEvents = False
Call Makro1
x.Select
Application.EnableEvents = True
End Sub
OBS om det uppstår ett fel kan beräkningar förbli avstängda, vilket skapar märkligheter eftersom excel slutar räkna helt och hållet! Skulle det inträffa så går du in på fliken formler, väljer beräkningsalternativ i gruppen Beräkning och markerar där automatisk.
mvh
Kihlman