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
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
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
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
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
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.
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
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.