Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1600to1604
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige