2016-07-15 8 views
1

私は、個々の列を識別する個々のセルであるスプレッドシート内の300を超える名前付き範囲を扱っています。私は名前付き範囲がある場合::列に名前付き範囲があるかどうかを調べる

myRange = Range(cells(2,7).address) 

とアクティブセルが

cells(5,7) 

ですがある

質問(多くの重複があるとして彼らは、カラム名ではありません)アクティブなセルの列番号から識別でき、名前付き範囲と同じ列にあることを特定し、その名前付き範囲の名前を返す方法

何か.......のような

Function Get_RangeName(MyColumn) as string 
    For Each nm In ThisWorkbook.Names 
     if ***code to get coloumn number here*** = Mycolumn then 
      Get_RangeName = nm.name 
     end if 
    next nm 
end function 

私はちょうど2つの範囲がいずれかを共有するかどうかを決定するために名前

+0

レンジ(nm)の.ColumnがYowE3K @ nmの – YowE3K

+0

変数文字列に含まれる名前を持つ範囲の列番号を返します。交差()関数を使用することができます - どのような名前付き範囲に複数の列が含まれる場合 – Jeeped

+0

@Jeepedそれぞれ1つだけの列です。これは、再設計中にわずか数ヶ月しか持続しないストップギャップ対策のためのものです。範囲は単一のセル以上になることはありません。 –

答えて

4

あなたは

Function Get_RangeName(MyColumn as Long) as string 
    For Each nm In ThisWorkbook.Names 
     if Not Intersect(Columns(Mycolumn),Range(nm)) Is Nothing then 
      Get_RangeName = nm.name 
      Exit For 
     end if 
    next nm 
end function 
3

使用Intersect methodから列番号を取得する方法がわかりません細胞。

if not intersect(columns(cells(5,7).column), range("myNamedRange")) is nothing then 
    'the full column and the named range share at least 1 cell 
end if 
関連する問題