Avatar billede sorth Novice
06. januar 2005 - 08:25 Der 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

Run-time error `9`:
Subscript out of range

Er der en der kan hjælpe mig???????
Avatar billede kabbak Professor
06. januar 2005 - 09:14 #1
det lader til at Old mister sin værdi, har du nogen andre makroer der bruger Old som variabel, som så overskriver den,
Avatar billede sorth Novice
06. januar 2005 - 09:25 #2
OG HVAD KAN MAN SÅ GØRE VED DET
Avatar billede kabbak Professor
06. januar 2005 - 09:27 #3
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
Avatar billede sorth Novice
06. januar 2005 - 09:37 #4
Sub Flyt_til_diverse_ark_og_tilbage()

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
Avatar billede sorth Novice
06. januar 2005 - 09:58 #5
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
Avatar billede jkrons Professor
07. januar 2005 - 13:18 #6
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
Avatar billede sorth Novice
07. januar 2005 - 13:29 #7
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
Avatar billede jkrons Professor
07. januar 2005 - 16:45 #8
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.
Avatar billede sorth Novice
10. januar 2005 - 08:23 #9
Hej jkrons

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
Avatar billede jkrons Professor
10. januar 2005 - 08:30 #10
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.
Avatar billede sorth Novice
10. januar 2005 - 09:00 #11
den makro jeg har brugt ser sådan ud

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

Så jeg har Dim OldWS As String med
Avatar billede sorth Novice
10. januar 2005 - 13:54 #12
hej jkrons

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

MVH.
Avatar billede jkrons Professor
10. januar 2005 - 14:48 #13
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.
Avatar billede sorth Novice
11. januar 2005 - 08:07 #14
det er også rigtig jkrons men det så ikke ud til at det virkede
så jeg lavede denne nødløsning i stedet for
Avatar billede jkrons Professor
11. januar 2005 - 08:10 #15
Helt i orden. Tak for point.
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