|
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.
|
|