Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Viele Bereichsnamen mit VBA ändern

Viele Bereichsnamen mit VBA ändern
21.01.2018 16:59:14
Gerhard
Hallo,
in einer Arbeitsmappe benütze ich sehr viele Bereichnamen. Wenn ich die Bezüge von vielen dieser Bereichsnamen ändern muss, so ist das im Namensmanager sehr aufwändig.
Gibt es mit VBA die Möglichkeit, in allen Bereichsnamen die z. B. auf ...$150 enden (als untere Bereichszeile) diese auf z. B. ...$200 zu ändern.
Also aus =Eintragen!$D$10:$AB$150 soll =Eintragen!$D$10:$AB$200 werden,
oder aus =Urlaubsliste!$M$17:$O$150 soll =Urlaubsliste!$M$17:$O$200 werden.
Gesucht ist ein Macro das alle ...*$150 in ...*$200 im Namenmanager ändert.
Wer könnte mir das (wenn möglich) erstellen ?
Viele Grüße
Gerhard
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: for each
21.01.2018 18:05:42
?
Der Zugriff sollte so gehen:

dim Nn as Name
for each Nm in thisworkbook.names
debug.print Nm, Nm.address
next Nm
Dann sollte ein Replace möglich sein.
AW: for each weitere Hilfe ?
21.01.2018 18:34:34
Gerhard
Hallo ?
könntest du den Code evtl. vervollständigen? Mir gelingt das nicht.
Gruß
Gerhard
Anzeige
AW: for each weitere Hilfe ?
21.01.2018 18:56:20
Luschi
Hallo Gerhard,
hier mal mein Versuch:

Sub testeMachmal()
Dim wb As Workbook, na As Name, rg As Range
Dim adr As String, sRef As String
Set wb = ThisWorkbook
'alle Namen durchlaufen
For Each na In wb.Names
Debug.Print na.Name
Set rg = Nothing
'falls es Name gibt, die nicht auf einen Zellenbereich bezogen sind
On Error Resume Next
Set rg = na.RefersToRange
On Error GoTo 0
If Not rg Is Nothing Then
'Name hat einen Zellbezug
adr = na.RefersTo
If InStr(1, adr, ":", vbTextCompare) > 0 Then
v = Split(rg.Address, ":", -1, vbTextCompare)
adr = v(1)
If Range(adr).Row = 150 Then
sRef = na.RefersTo
sRef = Replace(sRef, "150", 200, 1, -1, vbTextCompare)
'neuer Zewllbezug
na.RefersTo = sRef
End If
End If
End If
Next na
Set na = Nothing: Set wb = Nothing
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: testeMachmal funzt nicht
21.01.2018 20:12:27
Gerhard
Hallo Luschi,
zunächst Danke für die Unterstützung.
Das Macro steigt aus bei v = (Variable nicht dimensioniert) Ich schrieb dann Dim V (as ?).
Dann Laufzeitfehler 1004 Die Methode Range für das Objekt _Global ist fehlgeschlagen.
Gruß
Gerhard
AW: testeMachmal funzt nicht
21.01.2018 20:43:29
Luschi
Hallo Gerhard,
korrigiere diese Zeile: Dim adr As String, sRef As String, v As Variant
Dann läufts bei mir.
Gruß von Luschi
aus klein-Paris
Anzeige
testeMachmal funzt so!
21.01.2018 21:55:08
Gerhard
Hallo Luschi,
das Ersetzen der Zeilenwerte gelingt jetzt! Danke für diesen Code.
bis zum nächsten Mal im Forum
Gruß
Gerhard
AW:Vorschlag
21.01.2018 19:30:01
?
Ohne den Code von Luschi gesehen zu haben:

Sub T1()
Dim Nm As Name
Dim Nx As String
For Each Nm In ThisWorkbook.Names
Nx = Replace(Nm, "$10", "$20")
Debug.Print Nm.Name, Nm.RefersTo, Nx
Names(Nm.Name).RefersTo = Nx
Next Nm
end sub
(Replace muss angepasst werden)
Anzeige
AW:Vorschlag
21.01.2018 20:18:48
Gerhard
Hallo,
danke für die Hilfe.
Code steigt bei Zeile Names(Nm.Name).RefersTo = Nx aus.
Gruß
Gerhard
AW: Replace angepasst?
21.01.2018 20:30:48
?
falls du den Fehler nicht findest, müßtest du eine (sehr) abgespeckte Datei hochladen.
(sieh die die Ausgaben im debug-Fenster an)
AW: Dim v As Variant o.r.T
21.01.2018 20:21:13
Gerd
cu Gerd
Anzeige
AW:Names angepasst
21.01.2018 20:51:41
Gerd
Moin Gerhard!
Sub T1()
Dim Nm As Name
Dim Nx As String
For Each Nm In ThisWorkbook.Names
Nx = Replace(Nm, "$10", "$20")
Debug.Print Nm.Name, Nm.RefersTo, Nx
Nm.RefersTo = Nx
Debug.Print Nm.RefersTo
Next Nm
End Sub

cu Gerd
Fehlermeldung
21.01.2018 22:01:47
Gerhard
Hallo Gerd,
Laufzeitfehler 1004:
"Der eingegebene Name ist ungültig"
Gruß
Gerhard
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige