2017-04-04 22 views
4

私は別のワークシート内で名前付き範囲を作成する必要があるプライベートサブを持っています。 Worksheet_Change subであるため、ワークシート機能を維持する必要があります。私は正常にこのラインを持つ別のシート上の範囲に等しい範囲変数を設定することができました。しかしVBA Worksheet Sub別のワークシートで名前付き範囲を作成

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

、私は私のコードの他の部分にrng2を入れて、それは単に正しい範囲内を指し、アクティブシート。

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

と::

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

を下の機能は、それがモジュール内で全体としてブックの内部に格納されたときに動作しますが、もう一度、しません。ここ

は、私が試したものですワークシートの中で作業する。 私もSheets("Lists").rng2.Addressを試してみました。

答えて

3

は、シートの名前が含まれ、あなたがexternalパラメータを設定する必要があります。

rng2.address(external:=True) 
+0

ニースを、私は知りませんでした!あなたが私の答えのその部分を微調整したことを願っていますか? – CallumDA

+0

@CallumDA私はあなたの答えを見ていましたが、私はこれをコメントに示唆しました。問題ない。 :) –

+0

これは完璧に動作します - ありがとう! – reggie86

3

RefersTo文字列は"=Lists!A1"のようにする必要があります。だから欠けているのは、リストワークシートへの参照です。

このような何か試してください:アドレスを持っているために

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 
関連する問題