Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
892to896
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
892to896
892to896
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Set Bereich ... wie global gültig?

Set Bereich ... wie global gültig?
10.08.2007 22:05:00
Peter
Hallo Forum
Mit nachfolgendem Code definiere ich Bereiche. Nun habe ich festgestellt, dass damit ein Bereich definiert wird, der nur lokal, also in derjenigen Tabelle gültig ist.
Wie muss ich den Code ändern, damit der Bereich global, also innerhalb der ganzen Arbeitsmappe, gültig ist?
Danke für jede Rückmeldung.
Peter
Set Bereich = Sheets(Tabelle2.Name).Range("A" & strANF, "J" & strEND)
Names.Add _
Name:="xDaten", _
RefersTo:=Bereich, Visible:=True

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Set Bereich ... wie global gültig?
11.08.2007 01:01:00
Reinhard
Hi Peter,
schreibe in Modul1 ganz oben:
Option Explicit
Public Bereich As Range
Dann kannst du in anderen Prozeduren darauf zugreifen.
Gruß
Reinhard

AW: Set Bereich ... wie global gültig?
11.08.2007 10:23:00
Peter
Hallo zusammen
Habe das mit dem Public Bereich as Range noch nicht ganz begriffen, das heisst, es funktioniert noch nicht.
Ich möchte nach Ablauf des Makros den Bereich auch nicht auf Nothing stellen, denn die Bereichsnamen werden in einer anderen Tabelle in einer Formelabfrage gebraucht (SVERWEIS).
Dieser Makro habe ich in einer Tabelle hinterlegt, da er nur ausgeführt werden soll, wenn das Worksheet verlassen wird. Dann ist sichergestellt, dass die definierten Bereiche immer aktuell sind.
Was muss ich ändern, dass es nicht bei den lokalen Bereichsnamen bleibt?
Gruss, Peter
Option Explicit
Public bereich As Range

Private Sub Worksheet_deactivate()
Dim Bereich As Range
Dim strANF As String
Dim strEND As String
strANF = 6
strEND = Sheets(Tabelle2.Name).Cells(65536, 1).End(xlUp).Row           'ermittelt letzten  _
Eintrag in Spalte A (Pfad)
strEND = WorksheetFunction.Max(strEND, 1)                                                'falls  _
keine Daten vorhanden, wird Zeile 1 benannt
Set Bereich = Sheets(Tabelle2.Name).Range("A" & strANF, "A" & strEND)
Names.Add _
Name:="xValNr", _
RefersTo:=bereich, Visible:=True
Set Bereich = Sheets(Tabelle2.Name).Range("B" & strANF, "B" & strEND)
Names.Add _
Name:="xTitBez", _
RefersTo:=bereich, Visible:=True
Set Bereich = Sheets(Tabelle2.Name).Range("A" & strANF, "J" & strEND)
Names.Add _
Name:="xDaten", _
RefersTo:=bereich, Visible:=True
End Sub


Anzeige
AW: Set Bereich ... wie global gültig?
11.08.2007 10:32:00
Hajo_Zi
Hallo Peter,
so wie geschrieben, die Variable mit Public in einem Modul festlegen.
Ich glaube aber nicht das Du auf Variablen in einem Makro in der Tabelle zugreifen kannst.
Da mußt Du schon einen Namen in der Tabelle festlegen.
Mein Hinweis mit Nothing war nur ein gutgemeinter Rat, Du hast festgestellt das brauchst Du nicht. Ok ich kann damit Leben. Du wirst es dann irgendwann schon mal feststellen das es nicht geht. Aber die Erfahrung soll jeder selber machen.
Gruß Hajo

AW: Set Bereich ... wie global gültig?
11.08.2007 10:42:54
Peter
Hallo Hajo
Ich will nicht deinen guten Rat ausschlagen. Ich habe in anderen Makros die Bereiche wieder auf Nothing gestellt, da es ja sinnvoll ist.
Bei diesem Makro will ich einen global gültigen Namen festlegen, der bleiben soll. Bisher meinte ich, das funktioniere mit (als Beispiel)
Set Bereich = Sheets(Tabelle2.Name).Range("A" & strANF, "J" & strEND)
Names.Add _
Name:="xDaten", _
RefersTo:=bereich, Visible:=True
Das habe ich in einer anderen Tabelle so verwendet. Aber ich habe nicht daran gedacht, dass ich dort den festgelegten Namen nur innerhalb der gleichen Tabelle gebraucht habe. Im vorliegenden Fall will ich beim Verlassen des Sheets Bereiche benennen, die bleiben und in anderen Tabellen angesprochen werden können.
Was wäre denn aus deiner Sicht die richtige Vorgehensweise?
Danke für eine Rückmeldung.
Peter

Anzeige
AW: Set Bereich ... wie global gültig?
11.08.2007 10:55:00
Hajo_Zi
Hallo Peter,
warum schreibst Du nicht
ActiveWorkbook.Names.Add Name:="xDaten", RefersTo:= _
"=Tabelle2!$A$1:$B$3"
ganz ohne Variable.
Gruß Hajo

AW: Set Bereich ... wie global gültig?
11.08.2007 11:10:00
Peter
Hallo Hajo
DAS ist die Lösung. Auf meine "Bedürfnisse" umgewandelt heisst das
Option Explicit

Sub GlobalerName()
Dim strAnf
Dim strEnd
strAnf = 3
strEnd = 6
ActiveWorkbook.Names.Add Name:="xDaten", RefersTo:= _
"=Tabelle2!$A$" & strAnf & ":$B$" & strEnd
End Sub


Vielen Dank!
Peter

Anzeige
AW: Set Bereich ... wie global gültig?
11.08.2007 08:30:00
Hajo_Zi
Hallo Peter,
man sollte eigentlich nicht vergessen beim schließen der Arbeitsmappe den Bereiche wieder frei zu machen mit Set Bereich =Nothing.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige