Print side | Luk vindue

Problem med dynamisk fane navn

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=128
Udskrevet den: 19.Apr.2025 kl. 11:31


Emne: Problem med dynamisk fane navn
Besked fra: Guests
Emne: Problem med dynamisk fane navn
Posteringsdato: 10.Nov.2010 kl. 11:58
Hej til jer
 
Jeg arbejder med en større excel model med 40-50 faner, disse faner skal have samme navn som i celle I1 i arket. Cellen I1 består af en opslået værdi og noget tekst så den kunne hedde "Sony_Okt" hver af disse faner henter det ønskede fanenavn fra en navngivet område i et inddata ark. Jeg har prøvet at forsimple koden til et minimum, men får stadig fejlkoden: "1004 Et ark kan ikke omdøbes til at have samme navn som et andet ark, referenceobjekt eller en Visual Basic Mappe"
 
Jeg kan godt forstår hvad der menes med fejlen, men jeg kan bare ikke finde den for jeg har sikret mig at ingen af fanerne kommer til at hedde det samme.
 
Navnet skulle gerne være I1 på alle ark formlen i I1 hedder =A2&" "&M1
 
Tænker om man kan lave en form for fejlsikring?
 
Her er min kode:
 
Sub Take4()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Sheets
    With ws
    .Name = .Range("I1").Value
    End With
Next ws
End Sub
 
 
Håber der er en som kan hjælpe da jeg kigget mig omkring på nettet efter alternativer. Det ville spare mig for en masse tid ikke at skulle lave "dumme arbejde" ved manuelt at omdøbe faner hver måned.
 
Mvh.
 



Svar:
Besked fra: Allan
Posteringsdato: 10.Nov.2010 kl. 13:20
Hej,
 
Din kode fejler som sådan ikke noget, den kører fint her.
Problemet er som du selv nævner det, at flere ark ikke kan hedde det samme.
 
Du kan prøve at bruge denne kode, som vil fortælle dig navnet på det/de ark som fejler:
 
Sub Take4()
Dim ws As Worksheet
On Error GoTo Fejl
For Each ws In ActiveWorkbook.Sheets
    With ws
    .Name = .Range("I1").Value
    End With
Next ws
Exit Sub
Fejl:
MsgBox "Koden fejlede på: " & ws.Name, vbCritical
End Sub
 
Alternativt, hvis du 'bare' ikke ønsker at se fejlen, men blot ved undlade at omdøbe ark som kommer til at hedde det samme, kan du bruge denne kode:
 
On Error Resume Next
 
Sub Take4()
Dim ws As Worksheet
On Error Resume Next
For Each ws In ActiveWorkbook.Sheets
    With ws
    .Name = .Range("I1").Value
    End With
Next ws
End Sub
 
//Allan



Print side | Luk vindue