- ベストアンサー
リストボックスに特定の複数のセル範囲名だけ表示させたい。
リストボックスに特定の複数のセル範囲名だけ表示させたい。 印刷設定範囲等すべてのセル範囲設定名が以下の場合表示されます。 そこで特定のシート●のセル範囲名 「A 」「B」 「C」 だけリストボックスに表示させるにはどのようにしたらよいでしょうか? いろいろ試行してみましたがどうもうまくいきません。 Private Sub UserForm_Initialize() 'セルの範囲をリストボックスの選択項目として登録 Dim 名前 As Name For Each 名前 In ActiveWorkbook.Names Userform3.lstName.AddItem 名前.Name Next End Sub
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
下記の様な方法で、設定されているシートを特定してはいかがでしょうか。ご参考まで。 Sub test() Dim myName As Name For Each myName In ActiveWorkbook.Names If InStr(myName.RefersTo, ActiveSheet.Name) > 0 Then MsgBox "このシートに設定されている名前は " & myName.Name & " です" End If Next End Sub
その他の回答 (1)
- hana-hana3
- ベストアンサー率31% (4940/15541)
ネットを探すと下記のようなサンプルがあります。 [124774] そのシートに含まれる範囲名と範囲をリストアップしたい http://excelfactory.net/excelboard/excelvba/excel.cgi?mode=all&namber=124774&rev=0 上記を改造し、Sheet1 に含まれる範囲名を探す。 テストが終わったら使えるように書き換えましょう。 Sub Sample2() Dim NM As Name Dim Ws As String Ws = "Sheet1" If ActiveWorkbook.Names.Count Then For Each NM In ActiveWorkbook.Names If InStr(NM.RefersTo, Ws & "!") = 2 Then MsgBox NM.Name End If Next Else MsgBox "名前のつけられている範囲はありません" End If End Sub
お礼
アプローチのしかたは、一様でないことに気づきました。 私のために、貴重な時間を割いていただいて、感謝感激しました。 またよろしくお願いします。
お礼
早速のご回答ありがとうございました。 ご指導いただいたとおり、改良したところうまく動作しました。 熱烈感謝します。
補足
ありがとうございました おかげさまで次のように改良して うまく動作しました。 Private Sub UserForm_Initialize() 'セルの範囲をリストボックスの選択項目として登録 '「sheet1」シートの名前をつけたセル範囲のみリストボックスに表示する。 Dim myName As Name Sheets("sheet1").Select For Each myName In ActiveWorkbook.Names If InStr(myName.RefersTo, ActiveSheet.Name) > 0 Then Userform3.lstName.AddItem myName.Name End If Next End Sub