Namensvergabe per VBA
30.01.2009 12:14:00
Boris
ich verwende untenstehenden Code, um per VBA automatisch Namen zuzuweisen. Wenn in Zeile 1 eines Blattes (die Überschriften enthält) der Wert einer Zelle geändert wird, wird ein Name erstellt aus Blattname + "." + Überschrift (z.B. Umsatz.2008), mit dem Bezug=Blattname!$X$#2, wobei X die entsprechende Spalte ist, also z.B. =Umsatz!$K$2:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim n As Name
If Target.Row = 1 And Target.Cells.Count = 1 Then
If Application.CountIf(Sh.Rows(1), Target) > 1 Then
Application.Undo
Else
On Error Resume Next
Set n = ThisWorkbook.Names.Item(Target.Offset(1, 0).Name.Name)
On Error GoTo 0
If Not n Is Nothing Then n.Delete
If Target "" Then Target.Offset(1, 0).Name = Sh.Name & "." & Target
End If
End If
End Sub
Frage 1: Anstelle von Bezug=Blattname!$X$#2 würde ich gerne Bezug=INDIREKT(Blattname!$X$#2) zuweisen, weiß aber leider nicht wie...
Frage 2: Zusätzlich zu obigem Code würde ich gerne in einer anderen xl-Datei ein Makro implementieren, dass die gleichen Schritte wie oben ausführt, jedoch nur per Knopfdruck (und nicht über Workbook_SheetChange), weiß aber auch nicht wie...
LG Boris
PS: Der Code wurde mir hier zur Verfügung gestellt, allerdings verstehe ich ihn nicht so richtig:)