16. marts 2020 - 01:48 Der er 23 kommentarer

Link i Excel ark, når faner skifter navn

Hej
Jeg har følgende kode, som medfører, at jeg opretter link til et ny oprette sheet(StandardArk (2)) - Se nedenstående makro, min udfordring er når jeg ændre navnet på sheetet(StandardArk (2)) og efterfølgende kører nedenstående Macro igen, kører de nye henvisninger hen til det første oprindelig Sheet(StandardArk (2)), samt virker udskrift henvisningerne ikke

Nogle ideer ift. hvad jeg gør galt? 

    Sheets("StandardArk").Select
    Sheets("StandardArk").Copy Before:=Sheets(3)
    Sheets("Oversigtskema").Select
    Rows("5:5").Select
    Selection.Insert Shift:=xlDown
    Range("B5").Select
    ActiveCell.FormulaR1C1 = ""
    Range("C5").Select
    ActiveCell.FormulaR1C1 = ""
    Range("D5").Select
    ActiveCell.FormulaR1C1 = ""
    Range("B5").Select
    ActiveCell.FormulaR1C1 = "='StandardArk (2)'!R[-3]C"
    Range("C5").Select
    ActiveCell.FormulaR1C1 = "='StandardArk (2)'!R[-3]C[5]"
    Range("D5").Select
    ActiveCell.FormulaR1C1 = "='StandardArk (2)'!R[-3]C"
    Range("F5").Select
    ActiveCell.FormulaR1C1 = "='StandardArk (2)'!R[-3]C[1]"
    Range("G5").Select
    ActiveCell.FormulaR1C1 = "='StandardArk (2)'!R[-3]C[-1]"
    Range("H5").Select
    ActiveCell.FormulaR1C1 = "='StandardArk (2)'!R[-3]C[2]"
    Range("I5").Select
    ActiveCell.FormulaR1C1 = "='StandardArk (2)'!R[45]C[2]"
    Range("J5").Select
    ActiveCell.FormulaR1C1 = "='StandardArk (2)'!R[987]C[1]"
    Range("K5").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=[@Kontraktsum]+[@Ekstrasum]"
    Range("C5").Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        "'StandardArk (2)'!A1"
    Range("J5").Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        "'StandardArk (2)'!A992"
    Sheets("StandardArk (2)").Select
    Range("B939:K993").Select
    ActiveWorkbook.Names.Add Name:="Standardark2_ATS_Udskrift", RefersToR1C1:= _
        "='StandardArk (2)'!R939C2:R993C11"
    Sheets("Oversigtskema").Select
    Range("D5").Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        "Standardark2_ATS_Udskrift"
    Sheets("StandardArk (2)").Select
    ActiveWindow.SmallScroll Down:=-6
    Range("B1:K938").Select
    Range("K938").Activate
    ActiveWorkbook.Names.Add Name:="Standardark2_Ac_Udskrift", RefersToR1C1:= _
        "='StandardArk (2)'!R1C2:R938C11"
    Sheets("Oversigtskema").Select
    Range("B5").Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        "Standardark2_Ac_Udskrift"
Avatar billede kim1a Ekspert
16. marts 2020 - 07:30 #1
Du skal lave en variabel i stedet for det navngivne standardark (2).

F.eks. sådan her:

dim shtstandardark = worksheet
shtstandardark = sheets(2).name

På den måde er variablen shtstandardark altid navnet på det worksheet du har inden sheet3
16. marts 2020 - 08:03 #2
Kunne du evt. prøve at indsætte det i koden :) ?
Avatar billede kim1a Ekspert
16. marts 2020 - 08:56 #3
Jeg har indsat det i de første par linjer af din kode og rettet til variablen i to af dine henvisninger, jeg håber det giver mening for dig. Ellers er det nemmest hvis du uploader, så kan vi rette direkte i din workbook.

dim shtstandardark = worksheet

    Sheets("StandardArk").Select
    Sheets("StandardArk").Copy Before:=Sheets(3)
    shtstandardark = sheets(2).name

Sheets("Oversigtskema").Select
    Rows("5:5").Select
    Selection.Insert Shift:=xlDown
    Range("B5").Select
    ActiveCell.FormulaR1C1 = ""
    Range("C5").Select
    ActiveCell.FormulaR1C1 = ""
    Range("D5").Select
    ActiveCell.FormulaR1C1 = ""
    Range("B5").Select
    ActiveCell.FormulaR1C1 = "='"&shtstandardark&"'!R[-3]C"
    Range("C5").Select
    ActiveCell.FormulaR1C1 = "='"&shtstandardark&"'!R[-3]C[5]"
    Range("D5").Select
16. marts 2020 - 10:59 #4
Hej Kim

Hvordan vedlægger jeg en fil?
Avatar billede kim1a Ekspert
16. marts 2020 - 12:36 #5
Du kan desværre kun sende links, så dropbox eller lignende er din ven.

Men er du i tvivl om hvad du mere skal rette i din makro end det jeg allerede har rettet?

Du mener kun at rette de steder der står standard ark (2) til den nye variant shtstandardark på samme vis som jeg har gjort i de første linjer.
Avatar billede store-morten Ekspert
17. marts 2020 - 13:28 #6
Jeg har kikket/redigeret lidt i koden ;-)
Starter med kopier og der efter om døbes det nye ark.
Arkene får fortløbene nr.
Håber det kan bruges, evt. til inspiration.

    Sheets("StandardArk").Copy Before:=Sheets(3)
    Application.CutCopyMode = False
   
'NytArknavn: Nr_ + Antal af faner (øges med 1, ved hver kørsel)
    NytArknavn = "Nr_" & Sheets.Count
'Omdøber det kopierede "StandardArk"
    ActiveSheet.Name = NytArknavn
   
'Sætter udskriftsområder
    Sheets(NytArknavn).Names.Add Name:=NytArknavn & "_ATS_Udskrift", RefersToR1C1:= _
        "='" & NytArknavn & "'!R939C2:R993C11"
    Sheets(NytArknavn).Names.Add Name:=NytArknavn & "_Ac_Udskrift", RefersToR1C1:= _
        "='" & NytArknavn & "'!R1C2:R938C11"
   
'Vælger: Oversigtskema og indsætter ny række
    Sheets("Oversigtskema").Select
    Rows("5:5").Insert Shift:=xlDown
   
'Sætter formel og Hyperlink til: Udskriftsområdet i celle B5
    Range("B5").FormulaR1C1 = "='" & NytArknavn & "'!R[-3]C"
    ActiveSheet.Hyperlinks.Add Anchor:=Range("B5"), Address:="", SubAddress:= _
    "'" & NytArknavn & "'!R1C2:R938C11"
       
'Sætter formel og Hyperlink i celle C5
    Range("C5").FormulaR1C1 = "='" & NytArknavn & "'!R[-3]C[5]"
    ActiveSheet.Hyperlinks.Add Anchor:=Range("C5"), Address:="", SubAddress:= _
    "'" & NytArknavn & "'!A1"
       
'Sætter formel og Hyperlink til: Udskriftsområdet i celle D5
    Range("D5").FormulaR1C1 = "='" & NytArknavn & "'!R[-3]C"
    ActiveSheet.Hyperlinks.Add Anchor:=Range("D5"), Address:="", SubAddress:= _
    "'" & NytArknavn & "'!R939C2:R993C11"
   
'Sætter formel i cellerne
    Range("F5").FormulaR1C1 = "='" & NytArknavn & "'!R[-3]C[1]"
    Range("G5").FormulaR1C1 = "='" & NytArknavn & "'!R[-3]C[-1]"
    Range("H5").FormulaR1C1 = "='" & NytArknavn & "'!R[-3]C[2]"
    Range("I5").FormulaR1C1 = "='" & NytArknavn & "'!R[45]C[2]"
    Range("J5").FormulaR1C1 = "='" & NytArknavn & "'!R[987]C[1]"
'Sætter Hyperlink i celle J5
    ActiveSheet.Hyperlinks.Add Anchor:=Range("J5"), Address:="", SubAddress:= _
    "'" & NytArknavn & "'!A992"
   
    Range("K5").FormulaR1C1 = "=[@Kontraktsum]+[@Ekstrasum]"
17. marts 2020 - 21:08 #7
Hold da op! Virker perfekt ! Du har også løst, hvis man opretter to ark uden at ændre ark navnet ødelægger det ikke formlen

Så bliver man jo lidt interesseret i om følgende er muligt :D?

Til sidst i koden ønskes det
i Arket "Sum-Ark" i Celle H60,
at det fra det ny oprettede ark + H60 cellen til 

Så man løbende kender sum af alle H60 cellerne fra de oprettede ark
Avatar billede store-morten Ekspert
17. marts 2020 - 22:14 #8
Ændre H60 værdi?
17. marts 2020 - 22:31 #9
Den skal i "Sum-arket" opdaterer den eksisterende formel i celle H160

Sådan at formlen i cellen  "=StandardArk!H60"

Når første ark er oprettet skal den efterfølgende være

"=StandardArk!H60+ Nr. 7"

Når der er oprette et ark mere

"=StandardArk!H60+ Nr. 7+Nr. 8"

og sådan skal den forsætte hver gang man kører macroen
Avatar billede store-morten Ekspert
17. marts 2020 - 22:51 #10
Prøv:

    Worksheets("Sum-Ark").Range("H60").Formula = _
    Worksheets("Sum-Ark").Range("H60").Formula & _
    "+" & NytArknavn & "!H60"
17. marts 2020 - 23:09 #11
Debugger desværre :(
Avatar billede store-morten Ekspert
18. marts 2020 - 00:00 #12
Arket heder: Sum-Ark?

Og H60 indeholder start formlen?

=StandardArk!H60
18. marts 2020 - 00:43 #13
Arket hedder Sum-Ark

Og H60 indeholder startformlen

=StandardArk!H60
Avatar billede store-morten Ekspert
18. marts 2020 - 05:15 #14
Og du har tilføjet den som sidste linje i #6 😀
19. marts 2020 - 00:10 #15
jep tilføjet det i sidste linje, i det du skrev som sidste linje i #6

Den debuggede :(
Avatar billede store-morten Ekspert
19. marts 2020 - 00:23 #16
Det forstår jeg ikke 🤔
Avatar billede store-morten Ekspert
19. marts 2020 - 09:17 #17
19. marts 2020 - 21:51 #18
Fedt - Det kører bare nu :)

Tusind tak for hjælpen :)!
Avatar billede store-morten Ekspert
19. marts 2020 - 22:05 #19
Hvad gik der galt for dig? :-)
22. marts 2020 - 17:12 #20
Pas :D
Men efter jeg har brugt arket bliver Hyperlink referencerne ugyldige, når jeg jeg ændre fane navnet, synes ellers at jeg havde tjekket dette. men det gør de, har du nogen ide hvorfor?
Avatar billede store-morten Ekspert
24. marts 2020 - 08:46 #21
Ja, du må/kan ikke om døbe arket, efter markroen er kørt.
24. marts 2020 - 22:51 #22
Hej Morten
Ved du hvad jeg kan ændre følgende kode til, så den starter fra Nr_1 istedet for Sheet.Count ?

'NytArknavn: Nr_ + Antal af faner (øges med 1, ved hver kørsel)
    NytArknavn = "Nr_" & Sheets.Count
24. marts 2020 - 22:55 #23
Har løst det :D
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