Du kan putte det over i en streng med en join ordre. Der efter kan du så lave flytningen på strengen (det første felt fjernes) og tilføjes i enden af strengen. Derefter bruges en split ordre til at lave et nyt array.
s=join(A,",") lav ændringer på s. B skal være erklæret blot som dim B B=split(s,"'")
så vil join(A) være strengen "1,2,3,4,5" s=mid(join(A),3) nu er s="2,3,4,5" s=s & & "," & A(0) Nu er s strengen "2,3,4,5,1" B=split(s,",") Nu er indeholder B 2 3 4 5 1
Gem nedenstående lille vbs-program i en fil med f.eks. navnet test.vbs.
dim B, A(4) for i=0 to 4 A(i)=i+100 next s=join(A,",") msgbox S i=Instr(s,",") s=mid(s,i+1)& "," & A(0) msgbox S MsgBox B(0) MsgBox B(4) Når du klikker på den vil den først udskrive 100,101,102,103,104 derefter udskrives 102,102,103,104,101 og til sidst værdien af B(0) og B(4) B er altså blevet til 101 102 103 104 100
Hvis du vil have det i en funktion ser det således ud:
Option Explicit Dim A(4),i, B function Forskyd(A) dim i,s,B s=join(A,",") i=Instr(s,",") s=mid(s,i+1) & "," & A(0) forskyd=split(s,",") end function for i=0 to 4 A(i)=i+100 next B=forskyd(A) msgbox B(0) & " , " & B(4)
Jeg bliver ved. Versionen med join og split er nok den hurtigste for store tabeller. Den sidste version blev unødigt kompliceret. Her er den simpleste vil jeg tro (men jeg håber da at erikjacobsen vil komme med et forslag, der måske er endnu bedre): option explicit dim A(4),i sub forskyd(A) dim i,n,x n=Ubound(A) x=A(0) for i=0 to n-1 A(i)=A(i+1) next A(n)=x end sub for i=0 to 4 A(i)=i+1 next forskyd A forskyd A forskyd A msgbox A(0) & A(1) & A(2) & A(3) & A(4)
Nu har jeg undersøgt hastigheden af de forskellige metoder. Den sidste er den bedste. Ofte giver split og join funktionerne meget hurtige håndteringer af tabeller, men i dette tilfælde går det langsommere end den helt simple direkte metode. (for tabeller med dimension 20000 er der en faktor 2 til forskel)
Det du laver, nmh, ser såmænd ganske fornuftigt ud, hvis det der skal flyttes ikke fylder for meget.
Synes godt om
Ny brugerNybegynder
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.