06. januar 2005 - 08:25Der er
14 kommentarer og 1 løsning
Ændring af makro
Jeg har en makro der ser sådan her ud
Dim Old As String Sub SpringTil() If Old <> "" And Old <> ActiveSheet.Name Then Sheets(Old).Select Else Old = ActiveSheet.Name a = CStr(ActiveCell.Value) Sheets(a).Select End If End Sub
Jeg har sat genvejs tasten til at være Ctrl+shift+Q det virker også frem og tilbage når jeg har et excel ark hvor der ikke er andet i. Men der hvor jeg skal bruge det er der mange makroer og formler. Der kan jeg kun gå den ene vej men ikke tilbage, så siger den
Prøv at se, her har jeg rettet i koden, Old har fået andet navn
Dim OldWS As String Sub SpringTil() If OldWS <> "" And OldWS <> ActiveSheet.Name Then Sheets(OldWS).Select Else OldWS = ActiveSheet.Name a = CStr(ActiveCell.Value) Sheets(a).Select End If End Sub
If OldWS <> "" And OldWS <> ActiveSheet.Name Then Sheets(OldWS).Select Else OldWS = ActiveSheet.Name a = CStr(ActiveCell.Value) Sheets(a).Select End If End Sub
jeg kom lige til at se at jeg ikke har Dim oldWS As String med har det nogen betydning
Jeg har også prøvet den anden med rettelser det er det samme problem
Kan det så lade sig gøre hvis at dele makroen op i to så når man er kommet frem at man så laver en makro der gør at man kommer hen til det sted man stod f.eks Ctrl+Shift+Q frem Ctrl+Shift+A tilbage
Prøv at se, hvilken værdi Old/OldWS har lige inden du får fejlen. Fx ved at ændre koden til
Sub Flyt_til_diverse_ark_og_tilbage() msgbox OldWs If OldWS <> "" And OldWS <> ActiveSheet.Name Then Sheets(OldWS).Select Else OldWS = ActiveSheet.Name a = CStr(ActiveCell.Value) Sheets(a).Select End If End Sub
Jeg er ikke lige klar over hvordan jeg ser den værdi du snakker om med den makro du har lavet får jeg det samme som før Run-time error `9`: Subscript out of range
Ok. Du skulle gerne få en meddelelesboks inden makroen begynder at arbejde. I dit tilfælde bør den være tom uanset hvad vej du skifter. Sådabn går det, når man ikke kan læse indenad (miog altså). Du skriver jo selv, at du ikke har dimmet OldWS. Derfor får den aldrig en værdi, som kan huskes til du skal tilbage.
Det er altså vigtigt at du har
Dim OldWS As String
med, og husk at den skal ligge i begyndelsen af modularket.
Jeg har prøvet din makro ændringer Når jeg trykker Ctrl+Shift+Q så kommer msgboxen hvor der står ok når man så trykker på den så ryger man ind på den rigtige fane . Når man så trykker igen så kommer igen msgboxen hvor der står ok, men når man trykker så meller den fejl Run-time error `9`: Subscript out of range ???????? Kan man så ikke lave en anden makro til at komme tilbage igen
Problemet er, at hvis du ikke Dim'er variablen uden for proceduren, bliver den sat hver gang du kalder makroen. Så uanset om du har en eller to makroer, skal OldWs dim'mes uden for den/de procedurer, hvor den kaldes.
Dim OldWS As String -------------------------------- Sub Flyt_til_diverse_ark_og_tilbage() msgbox OldWs If OldWS <> "" And OldWS <> ActiveSheet.Name Then Sheets(OldWS).Select Else OldWS = ActiveSheet.Name a = CStr(ActiveCell.Value) Sheets(a).Select End If End Sub
Jeg har lavet to makroer istedet for da det er 2 forskellige ark jeg skal tilbage til det kan løse problemet så jeg bruger din makro frem og denne sheets("ark"). selects tilbage med to anden genvejstast en lille nødløsning men det virker det kan være du får en bedre ide men kan du ikke ligge et svar så du kan få belønning for dit arbejde
Det kan vbære at jeg misfodrstået opgaven, for jeg har regnet med, at Tilbagr betød tilbage til det ark, du oprindeligt kom fra. Men herer i hvert fald et svar.
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.