Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1164to1168
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

neuer benannter Bereich innerhalb Bereich defin.

neuer benannter Bereich innerhalb Bereich defin.
Peter
Guten Tag
Ich brauche eine Starthilfe.
In einer bestimmten Tabelle ist ein benannter Bereich "XXX" vorhanden. In einigen Zellen dieses Bereiches steht ein "L". Wie kann ich nun mit allen Zellen, in denen ein "L" seht dem neuen benannten Bereich "LLL" zuweisen?
Danke für jeden Hinweis.
Gruss, Peter
AW: neuer benannter Bereich innerhalb Bereich defin.
29.06.2010 08:03:54
Gerd
Hallo Peter!
Für ...in denen ein L steht ... und sonst nichts.
Sub a()
Dim rngCell As Range, rngL As Range
For Each rngCell In Range("XXX")
If rngCell.Text = "L" Then
If rngL Is Nothing Then
Set rngL = rngCell
Else
Set rngL = Union(rngL, rngCell)
End If
End If
Next
If Not rngL Is Nothing Then
Names.Add "LLL", RefersToLocal:=Range(rngL.Address(True, True))
Range("LLL").Select 'nur für Test
End If
End Sub
Gruß Gerd
AW: neuer benannter Bereich innerhalb Bereich defin.
29.06.2010 09:09:05
Peter
Hallo Gerd
Genau so hab' ich mir das vorgestellt.
Danke, Peter
AW: neuer benannter Bereich innerhalb Bereich defin.
29.06.2010 09:23:07
Peter
Hallo Gerd
Doch noch eine Frage.
Ich habe den Code etwas umgebaut und rufe ihn auf, wenn ich eine bestimmte Tabelle (z.B. "Tabelle1" verlasse. Jetzt habe ich festgestellt, dass der Bereich zwar richtig definiert wird, dieser aber der Tabelle zugewiesen wird, die ich nach dem Worksheet_Deactivate aktiviere (z.B. "Tabelle2". Was muss ich ändern, damit die Bereichsdefinition der "Tabelle1" zugewiesen wird, hinter der der Code "Worksheet_Deactivate" steht?
Danke und Gruss, Peter
Private Sub Worksheet_Deactivate()
Call DefBereichInBereich("XXX", "LLL", "L")
End Sub
Sub DefBereichInBereich(sGross As String, sKlein As String, sID As String)
Dim rngCell As Range, rngL As Range
For Each rngCell In Range(sGross)
If rngCell.Text = sID Then
If rngL Is Nothing Then
Set rngL = rngCell
Else
Set rngL = Union(rngL, rngCell)
End If
End If
Next
If Not rngL Is Nothing Then
Names.Add sKlein, RefersToLocal:=Range(rngL.Address(True, True))
Range(sKlein).Select 'nur für Test
End If
End Sub
Anzeige
Name richtig angelegt, Select geht nicht?
29.06.2010 10:17:37
Erich
Hi Peter,
könnte es sein, dass der Code den Bereichsnamen LLL richtig anlegt und nur das anschließende Test-Select nicht funzt?
LLL kann nicht selektiert werden, weil das Blatt, in dem LLL liegt, nicht (mehr) aktiv ist.
Lösch mal die Zeile
Range(sKlein).Select 'nur für Test
und ersetze sie durch
MsgBox Range(sKlein).Address(, , , True)
Dann siehst du genau, wo LLL angelegt wurde.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Name richtig angelegt, Select geht nicht?
29.06.2010 11:02:38
Peter
Hallo Erich
Danke für die Antwort. Ich habe die Umstellung vorgenommen. Dies msgbox zeigt, dass
"LLL" im Blatt, das nach Verlassen der anderen Tabelle angewählt wird, angelegt wird.
Ich müsste wohl in der Codezeile
Names.Add sKlein, RefersToLocal:=Range(rngL.Address(True, True))
noch den Namen der Tabelle (die verlassen wird) angeben. Wie baue ich das ein? Kann ich das irgendwie mit "me" abfragen?
Gruss, Peter
Anzeige
es geht einfacher, in welchem Blatt?
29.06.2010 12:17:14
Erich
Hi Peter,
statt Range(rngL.Address) kann man doch einfach rngL schreiben. Das ist sogar genauer.
Hier meine Empfehlung:

Option Explicit
Private Sub Worksheet_Deactivate()
Call DefBereichInBereich("XXX", "LLL", "L")
End Sub
Sub DefBereichInBereich(sGross As String, sKlein As String, sID As String)
Dim rngCell As Range, rngL As Range
For Each rngCell In Range(sGross)
If rngCell.Text = sID Then
If rngL Is Nothing Then
Set rngL = rngCell
Else
Set rngL = Union(rngL, rngCell)
End If
End If
Next
If Not rngL Is Nothing Then
Names.Add sKlein, RefersToLocal:=rngL
MsgBox Range(sKlein).Address(, , , True)
End If
End Sub
Dass bei dir LLL im neuen Blatt angelegt wird, verstehe ich nicht.
Steht der Code von DefBereichInBereich() vielleicht nicht im Klassenmodul der betroffenen Tabelle?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: es geht einfacher, in welchem Blatt?
29.06.2010 12:39:54
Peter
Hallo Erich
Danke!
Ja, der Code steht nicht im Klassenmodul, sondern in einem anderen Modul. Dies, da der gleiche Code auch aus anderen Tabellen aufgerufen werden kann.
Vielen Dank für den Support und pardon, dass ich nicht erwähnt habe, dass der Code DefBereichInBereich in einem allgemeinen Modul enthalten ist.
Gruss, Peter
AW: Name richtig angelegt, Select geht nicht?
29.06.2010 11:11:50
Peter
Hallo Erich
Ich habe nun die Lösung gefunden - Übergabe des Tabellennamens (vgl. nachstehend). Nehme an, dass es "RefersTo:" auch tut (bisher "RefersToLocal:"
Gruss, Peter
Private Sub Worksheet_Deactivate()
Call DefBereichInBereich("XXX", "LLL", Me.Name, "L")
End Sub
Sub DefBereichInBereich(sGross As String, sKlein As String, sTabNam As String, sID As String)
Dim rngCell As Range, rngL As Range
For Each rngCell In Range(sGross)
If rngCell.Text = sID Then
If rngL Is Nothing Then
Set rngL = rngCell
Else
Set rngL = Union(rngL, rngCell)
End If
End If
Next
If Not rngL Is Nothing Then
Names.Add sKlein, RefersTo:=Sheets(sTabNam).Range(rngL.Address(True, True))
End If
End Sub
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige