Sub Feldnamen_bereinigen()
Dim felder As Range 'feld
Dim zelle As Range
Dim i As Long 'letzte Spalte
Dim varName As Name
Application.ScreenUpdating = False
'Namen ohne Nachfrage entfernen
For Each varName In ActiveWorkbook.Names
varName.Delete
Next varName
'Feldnamen bereinigen
Set wsakt = ActiveSheet
Set wsroh = ThisWorkbook.Sheets("vor_Bereinigung")
i = wsroh.UsedRange.Columns.Count
Application.EnableEvents = False
wsroh.Select
Set felder = wsroh.Range(Cells(1, 1), Cells(1, i))
'Bereich wird über Feldnamen definiert
For Each zelle In felder 'bei anderen Sonderzeichen ggfs. erweitern
zelle = Replace(zelle, " ", "_")
zelle = Replace(zelle, "-", "_")
zelle.Value = zelle.Value
Next
'automatische Namensvergabe auf 1. Zeile
wsroh.Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.CreateNames Top:=True, Left:=False, Bottom:=False, Right:=False
Range("A1").Select
wsakt.Select
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub