Avatar billede lkt Juniormester
04. oktober 2006 - 08:51 Der er 12 kommentarer og
2 løsninger

Automatisk navn på fane

Er det muligt, at det man skriver i en bestemt celle automatisk giver fanen navn?

Hvis muligt, hvor dan gør man så?
Avatar billede gider_ikke_mere Nybegynder
04. oktober 2006 - 09:06 #1
Den er faktisk lidt kryptisk da du skal bruge WorkSheet_Change

Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveCell.Address = "$A$2" And ActiveCell.Offset(-1).Range("A1").Value <> "" Then
    ActiveSheet.Name = ActiveCell.Offset(-1).Range("A1").Value
End If
End Sub
Avatar billede gider_ikke_mere Nybegynder
04. oktober 2006 - 09:09 #2
Problemet er at når du trykker "Enter", springer Excel som sefault ned på næste celle, og det bliver dermed den aktive celle.
Avatar billede supertekst Ekspert
04. oktober 2006 - 09:47 #3
Hvis den "navngivne celle" er A2:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$2" And Target.Value <> "" Then
        ActiveSheet.Name = Cells(2, 1).Value
    End If
End Sub
Avatar billede gider_ikke_mere Nybegynder
04. oktober 2006 - 10:04 #4
supertekst: Så enkel er det desværre ikke.
lkt: Hvis cellen er A1 bruger du denne kode, ellers skal jeg vide hvilken celle det drejer sig om.

Private Sub Worksheet_Change(ByVal Target As Range)
If Application.MoveAfterReturn = False Then
    If ActiveCell.Address = "$A$1" And ActiveCell.Value <> "" Then
        ActiveSheet.Name = ActiveCell.Value
    End If
Else
    If Application.MoveAfterReturnDirection = -4121 Then 'xlDown
        If ActiveCell.Address = "$A$2" And ActiveCell.Offset(-1).Range("A1").Value <> "" Then
            ActiveSheet.Name = ActiveCell.Offset(-1).Range("A1").Value
        End If
    Else
        If Application.MoveAfterReturnDirection = -4159 Then 'xlLeft
            If ActiveCell.Address = "$A$1" And ActiveCell.Value <> "" Then
                ActiveSheet.Name = ActiveCell.Value
            End If
        Else
            If Application.MoveAfterReturnDirection = -4161 Then 'xlRight
                If ActiveCell.Address = "$B$1" And ActiveCell.Offset(0, -1).Range("A1").Value <> "" Then
                    ActiveSheet.Name = ActiveCell.Offset(0, -1).Range("A1").Value
                End If
            Else
                If Application.MoveAfterReturnDirection = -4162 Then 'xlUp
                    If ActiveCell.Address = "$A$1" And ActiveCell.Value <> "" Then
                        ActiveSheet.Name = ActiveCell.Value
                    End If
                End If
            End If
        End If
    End If
End If
End Sub
04. oktober 2006 - 11:03 #5
akyhne -> hvorfor mener du at alt dette er nødvendigt? Target er jo en range og indeholder den celle der er blevet ændret i... men lkt skriver en "bestemt celle", så der er vel ikke noget problem..

Jeg ville gøre det således:
- Navngiv en celle    rSheetName
- Indsæt denne kode i arkets eget kodemodul
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Me.Range("rSheetName")) Is Nothing Then
    Me.Name = Me.Range("rSheetName").Value
  End If
End Sub
Avatar billede gider_ikke_mere Nybegynder
04. oktober 2006 - 11:23 #6
flemmingdahl: Du har ret med Target. Den kunne jeg ikke lige huske.
Avatar billede lkt Juniormester
04. oktober 2006 - 13:30 #7
Nu har jeg givet cellen navnet rSheetName.

Jeg ved ikke, hvordan man arbejder med arkets eget kodemodul og hvor? Kan jeg få hjælp til det?

Undskyld min uvidenhed.
Avatar billede gider_ikke_mere Nybegynder
04. oktober 2006 - 13:40 #8
Skal indsætte i arkets modul.
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Slut:
    If Target.Name.Name = "rSheetName" And Target.Value <> "" Then
        ActiveSheet.Name = Range("rSheetName").Value
    End If
Slut:
End Sub
04. oktober 2006 - 13:51 #9
Du kopier dette her:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Me.Range("rSheetName")) Is Nothing Then
    Me.Name = Me.Range("rSheetName").Value
  End If
End Sub

så højreklikker du på arkets fane, og vælger " Vis kode" så starter Microsoft Visual Basic, og her indsætter du det kopierede i det store hvide område.
04. oktober 2006 - 13:59 #10
Hvis ikke du ved noget om Microsoft Visual Basic editor, så har jeg engang skrevet denne lille guide, som MÅSKE giver lidt info
http://www.smartoffice.dk/Tips/LibrarySource.asp?App=Guide&Lib=Excel_Visual_Basic_Editor
Avatar billede lkt Juniormester
04. oktober 2006 - 14:00 #11
Tusind tak for hjælpen, det virker bare, som jeg havade tænkt mig.

Kan man komme på kursus i den slags?

Jeg håber ikke, du bliver sur akyhne, hvis jeg giver pointene til flemmingdahl. Det er nemlig udelukkende hans guidning jeg har brugt.
04. oktober 2006 - 15:22 #12
Der er flere der udbyder VBA (Visual Basic for Application) kurser, og der findes også flere ok bøger - søg på eksperten, jeg ved der er flere spørgsmål omkring bøger og Excel VBA.

akyhne kan jo smide et svar, så vi kan dele points. Akyhne har en point omkring et tomt felt. Din kode skal nok se således ud:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Me.Range("rSheetName")) Is Nothing And Not Target.Value = "" Then
    Me.Name = Me.Range("rSheetName").Value
  End If
End Sub
Avatar billede gider_ikke_mere Nybegynder
04. oktober 2006 - 17:42 #13
Så kan lkt fordele som han vil :-)
Avatar billede gider_ikke_mere Nybegynder
04. oktober 2006 - 17:43 #14
Næ.. dette er et svar!
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