The scriptsprog til Microsoft Excel, Visual Basic, kan du udvide Excel rigelig sæt værktøjer . Dog kan kodning direkte i Visual Basic være vanskeligt, fordi nogle funktioner (som sortering ) kræve etablering flere parametre i en nøjagtig fashion.You kan undgå hånd-kodning helt ved at lade makrooptageren skrive koden for dig, men det betyder ikke altid net det resultat, du søger. Løsningen er at kombinere det bedste fra begge verdener: bruge makroer til at gøre bulk kodning og en lille smule af hånden kodning for at afslutte jobbet . Sortere et lille bord
Brug Visual Basic til at sortere et lille bord . Begynd ved at indtaste følgende tabel i cellerne G8 til H11 i Ark 1 : Hej
kundenavn, tegner balanceZephyr Wind Machines , 5Arondale Skriveborde, - 10Bubble Gumballs , 30
Efter indtastning af data , skal du vælge det og begynde indspilningen af makroen (Udvikler > Optag makro) . Navngiv makroen MySort . Sorter (Data > Sortér A til Z) de udvalgte data på den første kolonne , og stoppe optagelsen makroen.
Replay Makro
Prøv at bruge makroen til at ty et andet område: kopiere og indsætte kundens bord til et andet område af regnearket , og vælg den nye serie . Replay den makro (Udvikler > Makroer > MySort ) og se effekten : data blev ikke sorteret. Kig efter problemet i Visual Basic-kode skabt af din makro optagelse. Begynd ved at navigere til koden : . Tryk på Alt -F8 , skal du vælge din MySort makro , og klik på knappen Rediger
Inde i MySort funktionen bemærke dette udsagn:
ActiveWorkbook.Worksheets ( " Ark1 " ). Sort.SortFields.Add Key : = Range (" G8 " ) ...
og en erklæring et par linjer efter det : .
SetRange Range (" C9 : D12 " )
Begge disse udsagn er kilden til problemet , de er grundene MySort undlader at sortere det valgte område: Visual Basic makrooptageren hard -kodet dataområdet ( " C9 : D12 ", og " G8 ") for at sortere . Din opgave er at erstatte de hardcodede intervaller at gøre makroen sortere det aktuelle valg
Brug Selection Property
Konkret parameter Nøgle: . = Range ( " G8 " ) fortæller Excel til at sortere kundens tabellen baseret på " kunden " kolonnen , der starter ved celle G8. For at udskifte den oprindelige "kunden " kolonnen med en inde den aktuelt valgte tekst , se til Selection ejendom Application objekt. Denne egenskab refererer til den række af aktuelt valgte celler. Erstat Nøgle : = Range (" G8 " ) med denne : Nøgle: = k . Du vil definere k på et øjeblik
næste hard -kodet udvalg at erstatte opstår nogle udsagn ned : . . SetRange Range (" G8 : H11 "). Metoden . SetRange angiver til Excel det komplette sortiment , du vil sortere . Udskift SetRange Range (" G8 : H11 "). Med dette: ". . SetRange r"
r variable , ligesom k ( ey ) variabel, du lige har skrevet , vil komme fra Selection ejendommen. Gå til starten af den makro definition og indtast disse linjer :
Dim r , k Som Range
Set r = Application.SelectionSet k = r.Columns (1)
< p > det første sæt opgaven definerer celleområde nødvendige for SetRange metoden - . hele markeringen. Den anden opgave indstiller interval nødvendig for den slags nøgle til den første kolonne i markeringen . Du kan sortere på den anden kolonne ved at ændre " 1 " til et " 2".
Test Korrigeret Macro
Koden korrektion er færdig. Test det ved at returnere til regnearket , vælge kunden bordet - uanset hvor du har placeret den på arket - og kører MySort . Kopier denne tabel til et nyt sæt af celler , skal du markere cellerne og køre MySort på dem igen. Bemærk den slags fungerer nu korrekt .