2016-08-05 24 views
1

Excelでは、私は2つの名前を定義しました。どちらも同じ名前ですが、範囲と価値が異なります。 1つはシートにスコープされ、もう1つはワークブックにスコープされます。ワークブックスコープの名前の取得方法は?

enter image description here

私は、セルの数式で、あるいはVBAのいずれかで、ブックスコープ名を取得できませんよ。 VBAで

、次はシートスコープの名前を返します:私は次のように入力したときに、セル内 ThisWorkbook.names("myName") enter image description here

を: Sheet1!myName

方法: =book.xlsb!myName Excelは、としてそれを書き換えセル式および/またはVBAでワークブックスコープの名前を取得しますか?

+0

私の答えを参照してください –

+1

すべての可能な答えはより多くの仕事になります、あなたの名前を一意にする...それらの名前を変更するオプションはありません?通常このような問題を避けるために、この "名前"は "ユニーク"でなければなりません... –

+0

IMOの場合、スコープは名前を分離するのに十分なはずです。たとえば、sheet1とsheet2にスコープされた名前は競合しません。この場合、スコープのオーバーラップがあるため、ローカルスコープが優先されます。しかし、書籍名またはブックオブジェクトで明示的に参照を修飾すると、論理的かつ直観的に、それが機能するはずです。実際のバグではない場合は、Excelの非公式な設計上の妥協案です。 –

答えて

0

この競合は、新しいブックののデフォルトの最初のシートでのみ発生します。競合はではなく、が他のシートに定義された名前で発生します。

デフォルトの1stシートの名前を変更しても、そのシートに名前の競合が発生します。この名前はシート名ではなくです。

あなたはデフォルトの1枚目を削除することができ、および新第一シート-使用-に被第二シート、ないは、この問題を持っています。これは、新しい本の最初の1枚目のシートに特有のものです。

デフォルトの最初のシートを削除していない場合は、いつものシートでのシートスコープの定義済みの名前がブックスコープの同じ名前を上書きします。

そのため、答え OPに、同じシートスコープの名前があるときブックスコープ名を取得する最も簡単な、最も簡単な方法は、にデフォルトの1枚目でそれをしようではありません。

VBAは必要ありません。唯一エクセル2010

コメントとMicrosoft linkでテスト

は、上記の回答に私を導きました。そのコメント作成者に感謝します。

0

使用この ThisWorkbook.Worksheets(「シート1」)。範囲(「がmyName」)。値

+0

彼はブックのスコープ内の名前ではなく、ブックのスコープ内の名前を望んでいます。 –

2

新しいモジュールで私のコードを貼り付けた場合は、に、VBA内および式の中に、この機能を使用することができますワークブックスコープで名前を得る:

Public Function §(ra As String) 
Application.Volatile 
Dim tName As Name 
For Each tName In ThisWorkbook.Names 
    If tName.Name = ra Then 
     § = tName.RefersToRange.Value 
     Exit Function 
    End If 
Next tName 
End Function 

ジャスト式またはVBAで§( "myRange")と "=§(" myRange ")" とそれを使用しています。 §( "Sheet1!myRange")を使用すると、シート範囲の名前も取得されます。

+0

@DirkReichelは、毎日何か新しいことを学ぶため、コメントをいただきありがとうございます。 –

+0

あなたは大歓迎です:) –

+0

@JulianKuchlbauer、非アルファ関数名の非常にクールな使用!なぜ名前に "t"を付けるのですか? Thy –

関連する問題