- ベストアンサー
エクセル VBAで範囲に名前を定義する
- エクセル VBAを使用して、範囲に名前を定義する方法について教えてください。
- 特定の範囲に名前を付ける方法が知りたいです。
- マクロの記録を使用して、セルの範囲に名前を付けたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは! 単に名前定義だけの場合は Sub 範囲import設定() Worksheets("Format").Range("A1").CurrentRegion.Name = "import" End Sub でOKだと思います。 >全データ範囲は毎回違うのですが・・・ というコトは一旦「import」という名前定義を削除して新たに名前定義し直す必要があると思います。 そこで↓は「import」という名前定義を削除するコードです。 Sub 削除() ActiveWorkbook.Names("import").Delete End Sub ※ 新しい範囲を名前定義する場合は、一旦「削除」のマクロを実行して 「範囲import設定」のマクロを実行してください。m(_ _)m
その他の回答 (2)
- eden3616
- ベストアンサー率65% (267/405)
こんなかんじで。 何をしているかは、コメント参照願います。 ■VBAコード Sub 範囲import設定() '変数を宣言 Dim myStr As String 'A1セル基点Ctrl+*のセル範囲のアドレスをR1C1形式で取得 myStr = Range("A1").CurrentRegion.Address(External:=True, ReferenceStyle:=xlR1C1) '"="を結合し、"[ブック名]"を削除 myStr = "=" & Right(myStr, Len(myStr) - InStr(1, myStr, "]")) '名前の定義 ActiveWorkbook.Names.Add Name:="import", RefersToR1C1:=myStr End Sub
お礼
ありがとうございました。 今回の問題に関してはtom04さんの方法がもっとも簡便でしたのでそちらを使わせてもらいました。 アドレスの取得方法など参考になりました。
- Cupper-2
- ベストアンサー率29% (1342/4565)
範囲を指定して記録マクロを確認してみましょう。 A1セルからE10セルまでの範囲を指定したとすると Range("A1:E10").Select ActiveWorkbook.Names.Add Name:="Input", RefersToR1C1:="=Format!R1C1:R10C5" とかなりませんか。 1行目は分かりますよね。A1:E10を選択しています。 2行目の後ろのほう、"=Sheet1!R1C1:R10C5" はRC形式でのセルの指定です。 A1:E10と同じ意味を持っています。 ・・・ってか、都度範囲を指定して名前を付けるのであれば、 普通に範囲を指定して範囲名を手動でつければ良い と思います。 どこかにデータの範囲が記入されているならそのセルを参照して・・・と言うことはできますけどね。
補足
ありがとうございます。 おっしゃるとおりなのですが、パソコンに詳しくない人にも使えるように自動で名前をつけられるようにしたいのです。
お礼
ありがとうございました。 コピペでやらせてもらいました。うまく行きました。