Einleitung

Das manuelle Benennen einer großen Anzahl von Zellen in Excel kann eine zeitraubende Aufgabe sein, besonders wenn es nach einem bestimmten Schema erfolgen soll. Um dieses Problem zu lösen, bietet der folgende VBA-Code eine effiziente Möglichkeit, Zellen automatisch und systematisch zu benennen.

VBA

Die Prozedur Zellen_eines_Bereiches_benennen ermöglicht es, Zellen in einem ausgewählten Bereich basierend auf dem Zeilen- und Spaltenzähler zu benennen. Der Benutzer wird aufgefordert, ein Benennungsschema einzugeben, wobei %R% und %C% als Platzhalter für Zeilen- bzw. Spaltenzähler dienen.

Public Sub Zellen_eines_Bereiches_benennen()
Dim myRange As Range
Dim myNames As String
Dim RI As Integer
Dim CI As Integer
Dim strR As String
Dim strC As String
Application.DisplayAlerts = False
On Error GoTo Err_Handler
Set myRange = Application.InputBox("Wählen Sie den Bereich aus, den Sie benennen möchten:", "Bereich auswählen:", , , , , , 8)
' Bestimmen des Formats für Zeilen und Spalten basierend auf deren Anzahl
If myRange.Columns.Count > 9999 Then
strC = "00000"
ElseIf myRange.Columns.Count > 999 Then
strC = "0000"
ElseIf myRange.Columns.Count > 99 Then
strC = "000"
ElseIf myRange.Columns.Count > 9 Then
strC = "00"
Else
strC = "0"
End If
If myRange.Rows.Count > 9999 Then
strR = "00000"
ElseIf myRange.Rows.Count > 999 Then
strR = "0000"
ElseIf myRange.Rows.Count > 99 Then
strR = "000"
ElseIf myRange.Rows.Count > 9 Then
strR = "00"
Else
strR = "0"
End If
' Benennen der Zellen basierend auf Benutzereingaben
If myRange.Columns.Count = 1 And myRange.Rows.Count >= 1 Then
myNames = InputBox("Geben Sie den Namen der Felder ein [%R% für den Zähler der Zeile]", "Eingabe")
If InStr(myNames, "%R%") <> 0 Then
For RI = 1 To myRange.Rows.Count
myRange.Cells(RI, 1).Select
ActiveWorkbook.Names.Add Name:=CStr(Replace(myNames, "%R%", Format(RI, strR))), RefersTo:=ActiveCell
Next RI
End If
ElseIf myRange.Rows.Count = 1 And myRange.Columns.Count >= 1 Then
myNames = InputBox("Geben Sie den Namen der Felder ein [%C% für den Zähler der Spalten]", "Eingabe")
If InStr(myNames, "%C%") <> 0 Then
For CI = 1 To myRange.Columns.Count
myRange.Cells(1, CI).Select
ActiveWorkbook.Names.Add Name:=CStr(Replace(myNames, "%C%", Format(CI, strC))), RefersTo:=ActiveCell
Next CI
End If
ElseIf myRange.Rows.Count > 1 And myRange.Columns.Count > 1 Then
myNames = InputBox("Geben Sie den Namen der Felder ein [%C% für den Zähler der Spalten und %R% für den Zähler der Zeilen]", "Eingabe")
If InStr(myNames, "%C%") <> 0 And InStr(myNames, "%R%") Then
For CI = 1 To myRange.Columns.Count
For RI = 1 To myRange.Rows.Count
myRange.Cells(RI, CI).Select
ActiveWorkbook.Names.Add Name:=CStr(Replace(Replace(myNames, "%C%", Format(CI, strC)), "%R%", Format(RI, strR))), RefersTo:=ActiveCell
Next RI
Next CI
End If
End If
Exit Sub
Err_Handler:
MsgBox ("Beachten Sie, dass der Name gültig sein muss.")
Application.DisplayAlerts = True
End Sub

Diese Funktion ermöglicht es, einen ausgewählten Zellenbereich in Excel automatisch nach einem vorgegebenen Schema zu benennen. Der Benutzer gibt ein Schema ein, und die Funktion ersetzt Platzhalter wie %R% und %C% durch entsprechende Zähler für Zeilen und Spalten. Beachten Sie, dass der Code mit einem Fehlerbehandlungsmechanismus ausgestattet ist, um sicherzustellen, dass die Benennung korrekt durchgeführt wird.

Funktionsweise

  • Der Code prüft die Größe des ausgewählten Bereichs und passt das Format für die Zeilen- und Spaltenzähler an.
  • Der Benutzer gibt das Benennungsschema ein, wobei %R% und %C% als Platzhalter für Zeilen- und Spaltennummern verwendet werden.
  • Die Prozedur durchläuft den Bereich und benennt jede Zelle gemäß dem festgelegten Schema.

Fehlerbehandlung

Im Falle eines Fehlers, etwa bei der Eingabe eines ungültigen Namens, wird eine entsprechende Fehlermeldung angezeigt.