Avatar billede fyrsten25 Praktikant
11. marts 2015 - 12:32 Der er 6 kommentarer og
1 løsning

Automatisk navneændring af fanenavne

Hej

Jeg har brug for en makro der automatisk ændre fanenavnene i mit excel ud fra en celleværdi.

Jeg har fundet denne makro:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    Set Target = Range("B2")
    If Target = "" Then Exit Sub
    On Error GoTo Badname
    ActiveSheet.Name = Left(Target, 31)
    Exit Sub
Badname:
    MsgBox "Please revise the entry in B2." & Chr(13) _
    & "It appears to contain one or more " & Chr(13) _
    & "illegal characters." & Chr(13)
    Range("B2").Activate
End Sub

Den har jeg så sat ind i hvert ark. B2 er i hvert ark efter ark 1 afhængig af en celle i ark 1. Når jeg så ændre cellernes værdi i ark 1, så ændres fanenavnet ikke automatisk, og den melder i stedet en fejl.

Er der en kode hvor fanenavnet for ark 2 henter værdien i celle B2 i ark 1 og ark 3 henter værdien i celle C2 i ark1 osv.?
Avatar billede boro23 Forsker
12. marts 2015 - 11:50 #1
Har testet koden, synes den kører OK, se link
http://www.gratisupload.dk/f/8qkefsg329/
Avatar billede fyrsten25 Praktikant
12. marts 2015 - 16:52 #2
Ja, men som du selv skriver, så skal man ind og opdatere i hver enkel fane. Jeg har dog i mellemtiden fundet en anden løsning, men er så i stedet strandet ved et andet problem.

Jeg har lavet et eksempel her:
http://www.gratisupload.dk/f/8qkrg4k6si/

Jeg har dog nu det problem, at når jeg ændre startårstallet med en, så ændre den ikke alle fanenavne. Dette kan man komme uden om ved at trykke på knappen overover et par gange (den kører den makro jeg har lavet). Hvis man så ændre årtallet med 4 år, så skifter alle fanenavne.

Det er denne makro jeg har lavet under moduler
Sub NameWS()
    On Error Resume Next
    For Each ws In ThisWorkbook.Worksheets
        ws.Name = Left(ws.Cells(2, 2).Value, 31)
    Next
    On Error GoTo 0
End Sub

Og så har jeg indsat denne kode under hver ark

Private Sub Worksheet_Change(ByVal Target As Range)
    NameWS
End Sub

Ved ikke om det bare blev mere forvirrende nu...
Avatar billede boro23 Forsker
13. marts 2015 - 06:21 #3
Årsagen til at arknavnene ikke ændre sig automatisk ved skift af et år. er at der allerede findes et ark af samme navn. Hvis du indsætter et ark mere, vil arkene først skifte navn for hver 5. år
Avatar billede fyrsten25 Praktikant
13. marts 2015 - 09:43 #4
Ja, okay. Det giver jo god mening.

Men så kan det nok ikke lade sig gøre?
Avatar billede boro23 Forsker
13. marts 2015 - 10:30 #5
Det kan sikkert godt lade sig gøre, men der får du nok brug for en VBA haj og der kan jeg ikke hjælpe. Det kan være der er nogle der kikker med, som har et bud. Go' weekend
Avatar billede fyrsten25 Praktikant
13. marts 2015 - 11:00 #6
ok. Tak for dit svar i hvert fald :)
Avatar billede fyrsten25 Praktikant
17. marts 2015 - 08:51 #7
Jeg har selv fundet en løsning nu, og excel mappen ændre nu alle arknavnene uanset om navnet allerede findes.


Denne macro skrives under moduler:
Sub NamesWS()

    Application.ScreenUpdating = False
   
    Dim SheetCount As Integer, Counter As Integer, WSName As String, NewName As String
   
    SheetCount = ThisWorkbook.Worksheets.Count
   
    For Counter = 1 To SheetCount
   
        Worksheets(Counter).Activate
        WSName = Worksheets(Counter).Name
       
        If WSName <> "Start" Then
            NewName = Cells(2, 2).Value
            ActiveSheet.Name = NewName & "X"
        End If
   
    Next Counter
   
    For Counter = 1 To SheetCount
   
        Worksheets(Counter).Activate
        WSName = Worksheets(Counter).Name
       
        If WSName <> "Start" Then
       
            WSName = Application.WorksheetFunction.Substitute(WSName, "X", "")
            ActiveSheet.Name = WSName
        End If
   
    Next Counter
   
    Worksheets("Start").Activate
   
    Range("E5").Activate
   
    Application.ScreenUpdating = True

End Sub

Og denne skrives under arkkoden:
Private Sub Worksheet_Change(ByVal Target As Range)
    NamesWS
End Sub
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