- ベストアンサー
エクセルVBAについて(シート名前変更)
sheet1に、 A1 ●●店 A2 △△店 A3 ■□店 ↓ と、ずらーっと、名前の一覧があります。 同一ファイルに別名でシートが20シートぐらいあって、そのシートの名前をsheet1の一覧から、自動で変更がしたいです。 初心者ですので、大変申し訳ございませんが、どなたかお教えください。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
sheet1が 名前のリストでしたら、以下のようなコードで各Sheetの名前が付けられると思います。 kazuは、全シートの数です。 名前が書かれているシートは、item(1)ということになります。 実際に使われる時は、名前のリストのあるシートを選択状態で実行するか、cellsの前にWorksheets.Item(1).cells(i,1)として使って下さい。 kazu = Worksheets.Count ReDim namae(kazu) As String For i = 2 To kazu Worksheets.Item(i).Name = Cells(i-1 , 1) Next i
その他の回答 (3)
- matsu_jun
- ベストアンサー率55% (146/265)
みなさんのマクロを試した後で結構ですので、こちらも試してみてください。 一応 ・シート名の書かれたシートは名前を変更しない ・シート名の書かれたシートの名前は「Sheet1」にこだわらない ・Sheet1に書かれたシート名が、シート名として利用してはいけない文字が 使われていた場合や空白セルだった場合はメッセージを表示すると共に 問題のセルまでカーソルが移動して、どのセルがおかしいかを示します。 他のシートのシート名が書かれたシートを表示させた状態で以下のマクロを 実行すればOKです。 マクロの貼り付け方と実行方法については、手前味噌ですが http://okweb.jp/kotaeru.php3?q=1219526 のANo.2をご覧下さい。 'ここまで------------------------------------------------------- Sub シート名一括変更() If Worksheets.Count = 1 Then MsgBox ("シートがありません") Exit Sub End If i# = 1 j# = 1 On Error GoTo ERREND Do While (i <= Worksheets.Count) If Worksheets(i).Name <> ActiveSheet.Name Then Worksheets(i).Name = ActiveSheet.Cells(j, 1).Value j = j + 1 End If i = i + 1 Loop MsgBox ("シート名の変更が正常に完了しました") Exit Sub ERREND: MsgBox Error(Err.Number) ActiveSheet.Cells(j, 1).Select End Sub 'ここまで-------------------------------------------------------
- kaekaekaede
- ベストアンサー率34% (11/32)
以下のでいかがでしょうか? Option Explicit Sub test() Dim wb As Workbook Dim wscont As Integer, l As Integer Set wb = ThisWorkbook wscont = wb.Worksheets.Count For l = 1 To wscont wb.Worksheets(l).Name = wb.Worksheets(1).Cells(l, 1).Value Next End Sub
- KenKen_SP
- ベストアンサー率62% (785/1258)
A1の値をSheet1の名前に A2の値をSheet2の名前に A3の値をSheet3の名前に などのように、規則性があれば簡単です。 しかし、上のような規則性がない、かつ既に各シートにデータが入力されている場合には工夫が必要です。 「Sheet2は●●店のデータ」などと「シートがどの店舗のデータなのか」を判別できるデータがどこかに入力されていますか? また、A1 ●●店 の現在のシート名は?
お礼
ありがとうございます。 規則性はあります。各シートは、グラフ-1、グラフ-2、グラフ-3・・・・と、sheet1に記載されている名前分あります。 Sheet1の名前数=シート数です。 よろしくお願いします。