Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1564to1568
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

Bereichsnamen nur vom act.Blatt auslesen

Bereichsnamen nur vom act.Blatt auslesen
21.06.2017 08:34:53
STeve
Guten Morgen..... an alle die hier uns Anfänger (hauptsächlich mich) immer so klasse unterstützen.
Hätte wieder mal eine Bitte/Frage:
Hier werden auf einem Blatt Bereichsnamen definiert (4 Schleifen - bis zu 240 Bereiche)
For Each wks In Worksheets
If Left(wks.Name, 3) = "ABC" Then
For i = 21 To lastMA Step 8
Cells(i, 1).Offset(-3, 2).Resize(, 32).Select
With Selection
.Name = "PlanStartZeile_von_" & Cells(i, 1)
End With
Next i
End If
Dann will ich die Namen nur aus diesem Blatt zu Unionen zusammenfassen:
ActiveWorkbook.Names - würde klappen aber müsste nur für das active Blatt die Namen auslesen/und anschließend zusammenfassen.
Dim DefinierteBereichsNamen As Names, Zaehlwerk As Integer
Set DefinierteBereichsNamen = ActiveWorkbook.Names 'funktioniert - ist aber nicht blattbezogen und liest daher zuviele aus
Dachte mir so:?
Set DefinierteBereichsNamen = ActiveSheet.Names 'geht nicht ? ---Count ist null
Vielleicht wäre es überhaupt am besten gleich oben bei:
.Name = "PlanStartZeile_von_" & Cells(i, 1)
den Namen exakt auf das active Blatt zu definieren ?
Besten Dank und in der Hoffnung auf pos. Nachricht.
LG STeve

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereichsnamen nur vom act.Blatt auslesen
21.06.2017 09:26:49
Beverly
Hi Steve,
Sub Namen()
Dim namName As Name
Dim rngBereich As Range
For Each namName In ActiveWorkbook.Names
If InStr(namName.RefersTo, ActiveSheet.Name) > 0 Then
If rngBereich Is Nothing Then
Set rngBereich = namName.RefersToRange
Else
Set rngBereich = Union(rngBereich, namName.RefersToRange)
End If
End If
Next namName
If Not rngBereich Is Nothing Then MsgBox rngBereich.Address
End Sub
Es werden sowohl globale Namen (die sich auf das aktive Blatt beziehen) als auch lokale Namen (die sich nur auf das aktive Tabellenblatt beziehen) berücksichtigt.


Anzeige
Hallo Beverly/Karin.......
21.06.2017 09:44:03
STeve
Guten Morgen Beverly/Karin..........Vorab schon mal DAAAAAANKE.
Ich wusste/hoffte das du die meldest sobald es um Range/Bereichsnamen geht.:-)
In deinen Code muss ich mich jetzt erst mal versuchen einzulesen. Verstehe mal nur Bahnhof.Bitte um Geduld.
Hoffe darf mich melden wenn bei mir weiter "Bahnhof" besteht.
LG Steve
Erläuterung
21.06.2017 10:05:33
Beverly
Hi Steve,
hier vielleicht den Code nochmal mit Kommentaren, damit du besser nachvollziehen kannst was abläuft:
Sub Namen()
Dim namName As Name
Dim rngBereich As Range
' Schleife über alle definierten Namen der aktiven Mappe
For Each namName In ActiveWorkbook.Names
' wenn der Bezug den Namen des aktiven Tabellenblattes enthält
If InStr(namName.RefersTo, ActiveSheet.Name) > 0 Then
' Variable ist noch leer
If rngBereich Is Nothing Then
' der Variablen den Bezugsbereich des laufenden Namen zuweisen
Set rngBereich = namName.RefersToRange
' Variable ist schon gefüllt
Else
' die Variable um den Bezugsbereich des laufenden Namen erweitern
Set rngBereich = Union(rngBereich, namName.RefersToRange)
End If
End If
Next namName
If Not rngBereich Is Nothing Then MsgBox rngBereich.Address
End Sub


Anzeige
Merci Karin......noch eine Kleinigkeit
21.06.2017 11:12:03
STeve
Hi Karin....jetzt habe ich es kapiert. Habe es eingebaut..Superklasse - Merci für die Erläuterungen.
Noch eine Bitte:
Die Bereichsnamen wurden ja mit:
With Selection
.Name = "PlanStartZeile_von_" & Cells(i, 1)
End With
definiert.
Vor der Zusammenfassung in eine der 4 Unionen muss ich aber diesen .Name ....noch mit der
.Name Like "*PlanStartZeile*" Then
aufteilen/splitten/selektieren.
If ActiveWorkbook.Name Like "*PlanEndeZeile*" Then ' geht nicht zeigt das Act.WB an
If ActiveWorkbook.Names Like "*PlanEndeZeile*" Then ' auch nicht zeigt Blattname und Adressen an
du weißt sicher welcher .Name das ist.
Danke und schön dass du hier dabei bist.
lg STeve
Anzeige
Unklare Fragestellung
21.06.2017 11:25:59
Beverly
Hi Steve,
meinst du damit, dass du nur die Namen der aktuellen Tabelle als Bereich zusammenfügen willst, die zu Beginn "PlanStartZeile" im Namen aufweisen?
If InStr(namName.RefersTo, ActiveSheet.Name) > 0 And Left(namName.Name, 14)="PlanStartZeile" Then


Karin - großes Lob.........Danke
21.06.2017 11:39:44
STeve
Hi. Alles Lob an dich.
Genau das ist er der namName.Name war der gesuchte Name.......ist aber auch kompliziert.
Danke und noch einen schönen Tag.
lg STeve

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige