2017-04-04 4 views
4

Ich habe eine private Subdatei, die benannte Bereiche in einem anderen Arbeitsblatt erstellen muss. Es muss eine Arbeitsblattfunktion bleiben, da es ein Worksheet_Change Sub ist. Ich habe auf einem anderen Blatt erfolgreich in der Lage gewesen, mit dieser Linie eine Bereichsvariable gleich einem Bereich einzustellen:VBA-Arbeitsblatt Sub Erstellen eines benannten Bereichs in einem anderen Arbeitsblatt

Set rng2 = Sheets("Lists").Range(Sheets("Lists").Cells(2, Col), Sheets("Lists").Cells(Unique, Col)) 

Allerdings, wenn ich rng2 in den anderen Teil meines Codes setzen, sie bezieht sich lediglich auf den richtigen Bereich innerhalb das aktive Blatt.

Hier ist, was ich habe versucht:

ActiveWorkbook.Names.Add Name:="Level" & Col, RefersTo:= _ 
    "= " & Sheets("Lists").Range(Sheets("Lists").Cells(2, Col), Sheets("Lists").Cells(Unique, Col)).Address & "" 

und:

ActiveWorkbook.Names.Add Name:="Level" & Col, RefersTo:= _ 
    "=" & rng2.Address & "" 

Die untere Funktion arbeitet, wenn es innerhalb eines Moduls innerhalb der Arbeitsmappe als Ganzes gespeichert ist, aber auch hier nicht Arbeit in einem Arbeitsblatt Sub. Ich habe auch Sheets("Lists").rng2.Address im unteren Versuch versucht.

Antwort

3

die Adresse haben, umfassen den Namen des Blattes, können Sie den external Parameter zu setzen haben:

rng2.address(external:=True) 
+0

Nizza, das weiß ich nicht! Hoffe, dass es Ihnen nichts ausmacht, dass ich diesen Teil meiner Antwort zwickte ++ – CallumDA

+0

@CallumDA hatte ich deine Antwort gesehen, hätte ich dies in einem Kommentar vorgeschlagen. Kein Problem. :) –

+0

Es funktioniert perfekt - vielen Dank! – reggie86

3

Ihre RefersTo Zeichenfolge muss etwas wie "=Lists!A1" sein. Alles, was fehlt, ist der Verweis auf das Listen-Arbeitsblatt.

versuchen, etwas wie folgt aus:

Dim wsLists As Worksheet 
Set wsLists = ThisWorkbook.Worksheets("Lists") 

With wsLists 
    Set rng2 = .Range(.Cells(2, Col), .Cells(Unique, Col)) 
    ThisWorkbook.Names.Add Name:="Level" & Col, RefersTo:="=" & rng2.Address(external:=True) 
End With 
Verwandte Themen