- ベストアンサー
エクセルVBAでセルの値を名前定義連続
- エクセルVBAを使用して、セルの値を連続的に名前定義する方法について質問があります。
- 行方向に順次増えていくセルの値を、VBAを使って名前定義したいと考えています。
- 名前定義する範囲は、セルの値が変化しても同じ範囲内で重複しないようにしたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! >参照範囲は、C3ならC列全体、D3ならD列全体・・・としていきたいです。 というコトですので、列全体を対象としています。 まずすべての「名前定義」を削除し、新たに「名前定義」するようにしています。 Sub Sample1() Dim j As Long, myName As Name For Each myName In ActiveWorkbook.Names myName.Delete Next myName For j = 3 To Cells(3, Columns.Count).End(xlToLeft).Column If Cells(3, j) <> "" Then '←念のため ActiveSheet.Columns(j).Name = Cells(3, j) End If Next j End Sub ※ i = Range("B4:B" & Cells(Rows.Count, "B").End(xlUp).Row).Count + 2 の部分が何をしたいのか判りませんので 無視して列全体としています。m(_ _)m
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
簡易版: sub macro1() dim n as name dim h as range for each n in activeworkbook.names ’if n.referstorange.rows.count = rows.count then '適宜応用の事 n.delete ’end if next for each n in activesheet.names n.delete next for each h in range(range("C3"), cells(3, columns.count).end(xltoleft)) activeworkbook.names.add name:=h.value, refersto:=h.entirecolumn next end sub
お礼
ありがとうございました。 動作確認問題ありませんでした。 最初は空白でエラーが発生していたようなので、No.1さんのを参考に If h <> "" Then を入れると解決しました。
お礼
どうもありがとうございました。問題なくできました。 列全体で指定してもIf Cells(3, j) <> "" Then があるので特に支障はありません。