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.