Avatar billede Cale Mester
08. februar 2021 - 14:59 Der er 12 kommentarer og
1 løsning

Navngivet arknavn

Hej

Jeg har Ark 1 som ligger data. Jeg vil gerne have automatisk navngivet måske med en knappe Ark2,Ark3,Ark4,Ark5,Ark6,Ark7.... frem til Ark16

Jeg har forskellige navn på kolonne I hvor der er eks 15 stk. navn.

Kan man lave en VBA og en knap der kan navngive Ark2 til Ark16 efter den kolonne I ?
Avatar billede jens48 Ekspert
08. februar 2021 - 15:52 #1
Denne lille makro indsætter 15 ark med de navne der står i I1:I15

Sub NavngivArk()
For x = 1 To 15
With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = Cells(x, 9)
End With
Next
End Sub
Avatar billede Cale Mester
08. februar 2021 - 16:27 #2
Den fanger første navn men fejler anden navn. Run timer error `1004´: Appilication-defined or objekt-defined error.

Når man trykker "debug" kommer frem den formlen:

.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = Cells(x, 9)
Avatar billede jens48 Ekspert
08. februar 2021 - 16:59 #3
Cellerne I1 til I15 skal være udfyldte, og der må ikke være nogen gengangere, heller ikke til allerde eksisterende ark. Sørg for at linjen
For x = 1 To 15
passer med rækkerne med navne. Hvis første navn står i række 2, så ret til
For x = 2 To 15
Avatar billede jens48 Ekspert
08. februar 2021 - 22:06 #4
Alternativt kan du bruge

Sub NavngivArk()
For x = 1 To 15
If Cells(x, 9) <> "" Then
With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = Cells(x, 9)
End With
End If
Next
End Sub
Avatar billede store-morten Ekspert
08. februar 2021 - 22:39 #5
Måske:
Sub Opret_nye_faner()

Sheets("Ark1").Select
    Sheets("Ark1").Range("I1:" & Sheets("Ark1").Range("I65536").End(xlUp).Address).Select
   
    For Each c In Selection.Cells
        If Not IsEmpty(c) Then
            Sheets.Add After:=Sheets(Sheets.Count)
            ActiveSheet.Name = c.Value
        End If
    Next c
   
End Sub
Avatar billede Cale Mester
09. februar 2021 - 12:18 #6
Hej store-morten

Tak den kører fint og skriver det hele.
Til sidst ender det med den
"run-time error `1004`: Application-defined or objekt-defined error"

Jeg ved ikke hvad det skyldes, selv om arknavn er 15.
Avatar billede Cale Mester
09. februar 2021 - 12:22 #7
Kan vi udvide den VBA kode til at sæt ind link?
Eks
I1 tekst LINK til ark2
I2 tekst LNIK til ark3
osv.....

dvs hvis eks. I1 hedder peter - ark2 hedder også (peter) - på I1 Peter med LINK
Avatar billede jens48 Ekspert
09. februar 2021 - 14:08 #8
Jeg har sat et par linjer ind i Store-Mortens makro. Måske kan det bruges:

Sub Opret_nye_faner()
Sheets("Ark1").Select
    Sheets("Ark1").Range("I1:" & Sheets("Ark1").Range("I65536").End(xlUp).Address).Select
    For Each c In Selection.Cells
        If Not IsEmpty(c) Then
            Sheets.Add After:=Sheets(Sheets.Count)
            ActiveSheet.Name = c.Value
            With c
            .Hyperlinks.Add Anchor:=c, Address:="", SubAddress:=c.Value & "!A1", TextToDisplay:=c.Value
            End With
        End If
    Next c
End Sub
Avatar billede Cale Mester
09. februar 2021 - 14:52 #9
Link er perfekt. Problemet er, når jeg eks åbne en ny regneark der står allerede Ark1,Ark2 og Ark3.
Data ligger på ark1. Når jeg trykker på den knap navngiver alle fra I1 og ned, men navngivning starter fra Ark4.
Når jeg trykker den første LINK i I1 virker ikke fordi den første navn starter fra Ark4.
Avatar billede jens48 Ekspert
09. februar 2021 - 15:48 #10
Har du ikke det problem jeg allerede beskrev i #3?
Avatar billede store-morten Ekspert
09. februar 2021 - 15:53 #11
Sub Opret_nye_faner_og_Link()
Sheets("Ark1").Select
    Sheets("Ark1").Range("I1:" & Sheets("Ark1").Range("I65536").End(xlUp).Address).Select
    For Each c In Selection.Cells
        If Not IsEmpty(c) Then
            Sheets.Add After:=Sheets(Sheets.Count)
            ActiveSheet.Name = c.Value
        End If
    Next c
   
Worksheets("Ark1").Select
Range("I1").Select

For Each Ws In ActiveWorkbook.Worksheets
ActiveCell.Hyperlinks.Add Anchor:=ActiveCell, Address:="", SubAddress:="" & Ws.Name & "!A1" & "", ScreenTip:="", TextToDisplay:=Ws.Name
ActiveCell.Offset(1, 0).Select
Next Ws
End Sub
Avatar billede Cale Mester
09. februar 2021 - 16:12 #12
Jens48 - den er rettet. Problemet er LINK på I1 refereret direkte til Ark1. Men navngivning er startet fra Ark4, når laver bruger den VBA kode. 


store-morten - LINK fra I1 til I15 bliver ikke sæt ind.
Avatar billede store-morten Ekspert
09. februar 2021 - 17:09 #13
Den skulle gerne lave en liste over alle ark i: I1 og ned også eksisterende ark?
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

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