100. Bereichsnamen mit VBA ändern

Aufgabenstellung:

Für diese Beispieldatei war die Aufgabenstellung Bereichsnamen über ein Makro zu ändern. Im Beispiel 1 und 2 steht am Ende des Bereichsnamen eine Monats- und Jahreszahl, die zum Bereichsnamen gehören. Diese sollen alle durch ein Makro geändert werden. Hier wird dann entweder alle Bereichsnamen oder nach einer Abfrage jedes einzelnen Bereichsnamen dieser geändert.
In Beispiel 3 wird anders als in Bsp. 1 und 2, wo ja nur Teile des Bereichsnamens geändert werden, der gesamte Bereichsname nach einer Abfrage geändert.

Achtung!!! Mit diesem Beispiel werden alle Bereichsnamen in der gesamten Datei, also nicht nur im aktuellen Tabellenblatt, geändert. Beachten Sie dieses bitte, wenn Sie eines der Makros in Ihre Datei übernehmen sollten.

Diese Beispiele stehen auch als Beispieldatei zum Download zur Verfügung.

In der Zipdatei befindet sich eine xls-Datei für Excel 2000 - 2003 und eine xlsm-Datei für Excel 2007.


Realisiert wurde das durch eine VBA-Lösung.

Beispiel1: Nur Teile des Bereichsnamen ändern

Der Code ist in ein StandardModul einzufügen


Option Explicit


Sub Beispiel_1_Bereichsnamen_ändern()
Dim BerName
Dim Änderung As Variant
Dim strBereichsname As String
Dim strBereich As String
Dim iCol As Integer
'Bei Auftreten eines Fehler zur Sprungmarke "errorhandler" springen
On Error GoTo errorhandler
'Öffnen einer Eingabebox, in der die Änderung eingetragen werden muss. Der _
 eingetragene Text wird in Variable "Änderung" geschrieben
Änderung = InputBox("Bitte Anderung eingeben")
'Wenn die Variable "Änderung" den boolschen Wert False oder keinen Wert aufweist _
 (entsteht, wenn in der Eingabebox die Abbrechen-Schaltfläche betätigt wird), dann _
 Prozedur beenden
If Änderung = False Then Exit Sub
'Schleife um alle vorhandenen Bereiche in der Datei anzusprechen
For Each BerName In Names
    'In Variable "strBereichsname" den neuen Bereichsnamen schreiben
    strBereichsname = Mid(BerName.Name, 1, InStr(BerName.Name, "_")) & Änderung
    'In Variable "strBereich" den Bereich, für den der Name definiert werden soll, schreiben, _
     Bereich wird aus der Variablen "BerName" ausgelesen
    strBereich = BerName
    'Die Variable "iCol" um den Wert 1 erhöhen, Variable wird nur in dieser Beispieldatei als _
     Hilfe zum Eintragen des Bereichsnamens im Tabellenblatt benötigt. Kann gelöscht werden
    iCol = iCol + 1
    'Bereichsname in Zeile 3 in der entsprechenden Spalte eintragen. Spaltenindexzahl stamm _
     aus Variable "iCol", Eintrag nur für diese Beispieldatei und kann gelöscht werden.
    Cells(3, iCol) = strBereichsname
    With ActiveWorkbook
    'angesprochenen Bereich löschen
        .Names(BerName.Name).Delete
        'Neuen Bereich mit dem neuen Bereichsnamen eintragen
        .Names.Add Name:=strBereichsname, RefersTo:=strBereich
    End With
Next
End Sub

 

Beispiel2: Nur Teile des Bereichsnamen ändern, nach vorheriger Abfrage

Der Code ist in ein StandardModul einzufügen


Option Explicit


Sub Beispiel_2_Bereichsnamen_ändern()
Dim BerName
Dim Änderung As Variant
Dim strBereichsname As String
Dim strBereich As String
Dim iCol As Integer
Dim Abfrage As Variant
'Bei Auftreten eines Fehler zur Sprungmarke "errorhandler" springen
On Error GoTo errorhandler

'Schleife um alle vorhandenen Bereiche in der Datei anzusprechen
For Each BerName In Names
    'Öffnen einer Messagebox, in der entschieden werden muss, ob der aufgelistete _
     Bereichsname geändert werden soll, Auswahl in Variable "Abfrage" schreiben
    Abfrage = MsgBox("Der gefundene Bereichsanme lautet: " & Chr(10) & Chr(10) & """" _
                    & BerName.Name & """" & Chr(10) & Chr(10) & "Soll der " _
    & "Name geändert werden?", vbYesNo, "Abfrage...")
    'Wenn Schaltfläche "Nein" betätigt wird, Prozedur beenden
    If Abfrage = 7 Then GoTo Ende
    'Öffnen einer Eingabebox, in der die Änderung eingetragen werden muss. Der _
     eingetragene Text wird in Variable "Änderung" geschrieben
    Änderung = InputBox("Bitte Anderung eingeben")
    'Wenn die Variable "Änderung" den boolschen Wert False oder keinen Wert aufweist _
     (entsteht, wenn in der Eingabebox die Abbrechen-Schaltfläche betätigt wird), dann _
     Prozedur beenden
    If Änderung = False Or Änderung = "" Then Exit Sub
    'In Variable "strBereichsname" den neuen Bereichsnamen schreiben
    strBereichsname = Mid(BerName.Name, 1, InStr(BerName.Name, "_")) & Änderung
    'In Variable "strBereich" den Bereich, für den der Name definiert werden soll, schreiben, _
     Bereich wird aus der Variablen "BerName" ausgelesen
    strBereich = BerName
    'Die Variable "iCol" um den Wert 1 erhöhen, Variable wird nur in dieser Beispieldatei als _
     Hilfe zum Eintragen des Bereichsnamens im Tabellenblatt benötigt. Kann gelöscht werden
    iCol = iCol + 1
    'Bereichsname in Zeile 3 in der entsprechenden Spalte eintragen. Spaltenindexzahl stamm _
     aus Variable "iCol", Eintrag nur für diese Beispieldatei und kann gelöscht werden.
    Cells(3, iCol) = strBereichsname
    With ActiveWorkbook
    'angesprochenen Bereich löschen
        .Names(BerName.Name).Delete
        'Neuen Bereich mit dem neuen Bereichsnamen eintragen
        .Names.Add Name:=strBereichsname, RefersTo:=strBereich
    End With
Ende:
Next
End Sub

 

Beispiel3: Gesamten Bereichsnamen ändern nach vorheriger Abfrage

Der Code ist in ein StandardModul einzufügen


Option Explicit


Sub Beispiel_3_Bereichsnamen_ändern()
Dim BerName
Dim Änderung As Variant
Dim strBereichsname As String
Dim strBereich As String
Dim iCol As Integer
Dim Abfrage As Variant
'Bei Auftreten eines Fehler zur Sprungmarke "errorhandler" springen
On Error GoTo errorhandler

'Schleife um alle vorhandenen Bereiche in der Datei anzusprechen
For Each BerName In Names
    'Öffnen einer Messagebox, in der entschieden werden muss, ob der aufgelistete _
     Bereichsname geändert werden soll, Auswahl in Variable "Abfrage" schreiben
    Abfrage = MsgBox("Der gefundene Bereichsanme lautet: " & Chr(10) & Chr(10) & """" & BerName.Name & """" & Chr(10) & Chr(10) & "Soll der " _
    & "Name geändert werden?", vbYesNo, "Abfrage...")
    'Wenn Schaltfläche "Nein" betätigt wird, zur Sprungmarke "Ende" springen
    If Abfrage = 7 Then GoTo Ende
'Sprungmarke "Anfang"
Anfang:
    'Öffnen einer Eingabebox, in der die Änderung eingetragen werden muss. Der _
     eingetragene Text wird in Variable "Änderung" geschrieben
    Änderung = InputBox("Bitte Anderung eingeben")
    'Wenn die Variable "Änderung" den boolschen Wert False oder keinen Wert aufweist _
     (entsteht, wenn in der Eingabebox die Abbrechen-Schaltfläche betätigt wird), dann _
     Prozedur beenden
    If Änderung = False Or Änderung = "" Then Exit Sub
    'Prüfen ob in dem eingetragenen Bereichsnamen ein Leerzeichen vorkommt, da es _
     dadurch zu einem Fehler kommen würde
    If InStr(Änderung, " ") > 0 Then
    'Wenn Leerzeichen vorkommt, Bildschirmmeldung ausgeben und...
        MsgBox "Der Bereihcsname enthält ein Leerzeichen. Das darf nicht sein. " _
        & "Bitte Eingabe ändern.", vbInformation, "Fehlerhafte Eingabe..."
        '... zur Sprungmarke "Anfang" springen um neuen Namen einzutragen
        GoTo Anfang
    End If
    'In Variable "strBereich" den Bereich, für den der Name definiert werden soll, schreiben, _
     Bereich wird aus der Variablen "BerName" ausgelesen
    strBereich = BerName
    'Die Variable "iCol" um den Wert 1 erhöhen, Variable wird nur in dieser Beispieldatei als _
     Hilfe zum Eintragen des Bereichsnamens im Tabellenblatt benötigt. Kann gelöscht werden
    iCol = iCol + 1
    'Bereichsname in Zeile 3 in der entsprechenden Spalte eintragen. Spaltenindexzahl stamm _
     aus Variable "iCol", Eintrag nur für diese Beispieldatei und kann gelöscht werden.
    Cells(3, iCol) = Änderung
    With ActiveWorkbook
    'angesprochenen Bereich löschen
        .Names(BerName.Name).Delete
        'Neuen Bereich mit dem neuen Bereichsnamen eintragen
        .Names.Add Name:=Änderung, RefersTo:=strBereich
    End With

Ende:
Next
End Sub

 


 


Dieses Beispiel wurde unter den in der Tabelle aufgeführten Versionen getestet.

  A B C D E
1        

2

 

Excel - Version

Getestet

 
3      
4   Excel 2007 12.0 a  
5   Excel 2003 11.0 a  
6   Excel 2002 10.0 a  
7   Excel 2000 9.0 a  
8   Excel 97 8.0    
9          
10   Anzahl der Downloads:

 
11          
12   Dieses Beispiel wurde bereits  x aufgerufen.  
13    
14          

 


> Beispieldatei herunterladen <

  Sollten beim Ausführen der Beispieldatei Fehler auftreten, bitte ich darum, mir eine Mail mit der Fehlerbeschreibung an fehler@excelbeispiele.de zu schicken.
Danke!

 Möchten Sie www.excelbeispiele.de in Ihre Favoriten aufnehmen? Dann Klicken Sie hier.
 

Kontakt:

letzte Aktualisierung am 06.01.2008

© 2004 - Copyright Oliver Scheckelhoff,
All Rights Reserved