アプリ版:「スタンプのみでお礼する」機能のリリースについて

Sub 範囲import設定()
Sheets("Format").Select
Range("A1").Select
Selection.CurrentRegion.Select
ActiveWorkbook.Names.Add Name:="import", RefersToR1C1:="=Format!R1C1:R26C7"
End Sub

「マクロの記録」でCTRL + * で全データ範囲を選択して"import"という名前を定義したところ
上のようなコードになりました。全データ範囲は毎回違うのですが、ごらんのようにセル番号
で指定されてしまいます。そのつど異なる全データ範囲に名前を定義するにはどうすればいいのでしょうか。
よろしくお願いします。

A 回答 (3件)

こんなかんじで。


何をしているかは、コメント参照願います。

■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
    • good
    • 1
この回答へのお礼

ありがとうございました。
今回の問題に関してはtom04さんの方法がもっとも簡便でしたのでそちらを使わせてもらいました。
アドレスの取得方法など参考になりました。

お礼日時:2014/09/19 18:16

こんにちは!



単に名前定義だけの場合は

Sub 範囲import設定()
Worksheets("Format").Range("A1").CurrentRegion.Name = "import"
End Sub

でOKだと思います。

>全データ範囲は毎回違うのですが・・・
というコトは一旦「import」という名前定義を削除して新たに名前定義し直す必要があると思います。
そこで↓は「import」という名前定義を削除するコードです。

Sub 削除()
ActiveWorkbook.Names("import").Delete
End Sub

※ 新しい範囲を名前定義する場合は、一旦「削除」のマクロを実行して
「範囲import設定」のマクロを実行してください。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございました。
コピペでやらせてもらいました。うまく行きました。

お礼日時:2014/09/19 18:12

範囲を指定して記録マクロを確認してみましょう。


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と同じ意味を持っています。


・・・ってか、都度範囲を指定して名前を付けるのであれば、

   普通に範囲を指定して範囲名を手動でつければ良い

と思います。

どこかにデータの範囲が記入されているならそのセルを参照して・・・と言うことはできますけどね。

この回答への補足

ありがとうございます。
おっしゃるとおりなのですが、パソコンに詳しくない人にも使えるように自動で名前をつけられるようにしたいのです。

補足日時:2014/09/19 16:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!