- ベストアンサー
セルの項目をシート名にしたい
はじめまして、vba初心者の者です。 セルB3から始まるB列にある、 項目を各シートの名前にしたいです。 セルB列のセルの中身がnullになれば終了という動作。 例えば。 セルB3に「山田」という文字列があれば、Sheet1は山田にする。 セルB4に「佐藤」という文字列があれば、Sheet2は佐藤にする。 よろしくお願い申し上げます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>Sheet1は山田にする。 どのシートを山田にしたらいいのか、どのシートは次の佐藤にしたいのか、どういう対応とか関係とか目印とかあるんでしょうか。 それとも「(あるものを)山田にしたい」が間違いで、山田シートやニューブックをただ新しく作ればよかっただけですか。 sub macro1() dim h as range dim s as long, i as long s = worksheets.count + 1 ’シートを作る for each h in range("B3:B" & range("B65536").end(xlup).row) worksheets.add after:=worksheets(worksheets.count) activesheet.name = h.value next ’別のブックにする for i = worksheets.count to s step -1 worksheets(i).select false next i activewindow.selectedsheets.move end sub
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
>あとご教授頂いたソースを実行したところオブジェクトエラーになりました。 ご自分の直し間違いです。 間違い: > For Each h In Range("C3:C" & Range("B65536").End(xlUp).Row) 正解: For Each h In Range("C3:C" & Range("C65536").End(xlUp).Row) 他は回答のままで、アナタのヤリタイ通りになっています。
お礼
ご指摘ありがとうございます。 無事動作しました。 丁寧に教えて頂きありがとうございました。
- mar00
- ベストアンサー率36% (158/430)
新しいシートを追加して名前を変更するVBAです。 Sub Macro1() Dim WS As Worksheet Set WS = Worksheets("Sheet1") ★ For i = 3 To Cells(Rows.Count, "B").End(xlUp).Row Sheets.Add After:=Worksheets(Worksheets.Count) Worksheets(Worksheets.Count).Name = WS.Range("B" & i) Next End Sub ★の部分はデータを入力しているシート名に変更して下さい。
補足
早速のご回答ありがとうございます。 補足忘れてしまいましたが、 B3から始まる文字列のあるブックと、 文字列をシート名にするブックは、 別ブック(ブックがデータ参照元と貼り付け元の2つ存在してます。)になります。 vbaで作成可能でしょうか? 何卒よろしくお願い申し上げます。
補足
ご回答ありがとうございました。 訂正があります。 B3と記載しましたがC3でした。 例、 1、ブック1のSheet1に文字列の「山田」や「佐藤」のセルがあります。 2、ブック2は新規ブックです。 3、ブック1の最初のセルC3の文字列「山田」を、ブック2のSheet1を「山田」という名前のシート名にします。 4、ブック1の次のセルC4の文字列「佐藤」を、ブック2のSheet2を「佐藤」という名前のシート名にします。 5、ブック1の次のセルC5、C6、C7と繰り返していき文字列がなくなるまで続けます。 あとご教授頂いたソースを実行したところオブジェクトエラーになりました。 >'シートを作る > For Each h In Range("C3:C" & Range("B65536").End(xlUp).Row) > Worksheets.Add after:=Worksheets(Worksheets.Count) ここがエラーになりました。>> ActiveSheet.Name = h.Value > Next よろしくお願い申し上げます。