SSブログ

エクセル小僧:セル範囲に設定された名前を返す [コンピューター]

与えられたセル範囲(Range)に設定された名前を
取得する関数を作ったのですが。。。

ネットから拾った情報だけでは、うまくいかず。。
苦労しました。

関数のコードは以下の通り。
余計なコードが残ってますが、ご愛嬌(?)
nm(1)は不要ですかね。

'【機能】セル範囲に設定された名前を返す
Function mFRngToNm1(rng As Range) As String
  '【引数】
  ' rng : セル範囲
  '【変数】
  Dim nms As Names
  Dim nm(1) As Name
  Dim r As Integer
  Dim str1 As String
  '【実行コード】
  Set nms = ActiveWorkbook.Names ' ワークブックの名前コレクション
  For r = 1 To nms.Count
    ' 引数のセル範囲と同じセル範囲だったら、
    If "=" & ActiveSheet.Name & "!" & rng.Address = nms(r) Then
      ' 名前を返す
      mFRngToNm1 = "," & nms(r).Name
      Exit Function
    End If
  Next r
  mFRngToNm1 = ""
End Function

【解説】
問題の箇所は、
If "=" & ActiveSheet.Name & "!" & rng.Address = nms(r) Then
の行です。

ネットの情報ではNamesから得られる情報は、名前が定義されているセル範囲の
シート名!セル範囲』なのですが、
ジョージの環境(エクセル2016)では、
=シート名!セル範囲
でした。

RefersToRangeプロパティでRangeが得られるらしいですが、こちらの環境ではうまくいきませんでした。
ヤバイぜ!(8)  コメント(1)  トラックバック(0) 
共通テーマ:パソコン・インターネット

ヤバイぜ! 8

コメント 1

cheese999

ヤバイぜ! ありがとうございます[__猫]
by cheese999 (2016-08-07 05:23) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字(英大文字の「オー」、英小文字の「ユー」、アラビア数字の「ハチ」、アラビア数字の「イチ」、アラビア数字の「ニ」)を入力してください。

Facebook コメント

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。