- ベストアンサー
セル内に入力した文字をシート名にするマクロの方法を探しています
- セル内に入力した文字をシート名にする方法を探しています。具体的には、A1からA4までのセルに入力された文字を新しく作成したシートのシート名に使用したいです。
- 上記のアドレスには似たような内容がありますが、私が求めている方法とは少し異なります。
- セル内の文字を取得し、それを新しいシートのシート名として設定する方法を知りたいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
以下の様な感じかなと思います。 Sub macro() Dim C As Range For Each C In Selection Worksheets.Add after:=Worksheets(Worksheets.Count) ActiveSheet.Name = C.Value Next C End Sub
その他の回答 (4)
- okormazd
- ベストアンサー率50% (1224/2412)
#4です。たびたびすいません。 どうも汚いコードを書いてしまって・・・。 Sub test1() cn = 1 For Each c In Selection Sheets.Add(Sheets(cn)).Name = CStr(c.Value) cn = cn + 1 Next End Sub でいいかと。
- okormazd
- ベストアンサー率50% (1224/2412)
#2です。 「左寄せ」の意味が解らなかった。 ということであれば、 同じシート名がある可能性がなければ、 Sub test1() cn = 1 For Each c In Selection If cn = 1 Then Sheets.Add.Name = CStr(c.Value) cn = cn + 1 Else Sheets.Add(Sheets(cn)).Name = CStr(c.Value) cn = cn + 1 End If Next End Sub 同じシート名がある可能性があれば、 Sub test2() cn = 1 For Each c In Selection fsh = True For Each sh In ActiveWorkbook.Sheets If sh.Name = CStr(c.Value) Then fsh = False Exit For End If Next If fsh Then If cn = 1 Then Sheets.Add.Name = CStr(c.Value) cn = cn + 1 Else Sheets.Add(Sheets(cn)).Name = CStr(c.Value) cn = cn + 1 End If fsh = False End If Next End Sub というようなことか。
お礼
ご丁寧に二つもコードを記述して頂きまして ありがとうございました 困っていたので大変助かりました
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 一例です。 Alt+F11キー → 画面左の「This Workbook」をダブルクリック → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 Sheet1にデータがあるとしています。 Sub test() Dim c As Range Dim k As Long For Each c In Selection If c <> "" Then Worksheets.Add after:=Worksheets(Worksheets.Count) ActiveSheet.Name = c End If Next c For k = Worksheets.Count To 2 Step -1 If Worksheets(k).Name Like "Sheet*" Then Application.DisplayAlerts = False Worksheets(k).Delete End If Next k End Sub ※ 複数列を範囲指定すると (仮にA1~B3セルを範囲指定したとします) Sheet順は A1 → B1 → A2 → B2 → A3 → B3 の順になります。 参考になりますかね?m(_ _)m
お礼
ありがとうございます とっても参考になりました 素晴らしいです
- okormazd
- ベストアンサー率50% (1224/2412)
同じシート名がなれれば、次でできるが、 Sub test() For Each c In Selection Sheets.Add.Name = CStr(c.Value) Next End Sub 同じシート名があるときのエラーを避けるには、 Sub test() For Each c In Selection fsh = True For Each sh In ActiveWorkbook.Sheets If sh.Name = CStr(c.Value) Then fsh = False Exit For End If Next If fsh Then Sheets.Add.Name = c.Value fsh = False End If Next End Sub とかになるか。
補足
ありがとうございます 早速やってみたのですが 1つ目も二つ目も A1が左寄せではなく右寄せになってしまいました やりたいことはA1が一番左、A4(一番最後のセル)が 一番右に並ぶようにしたいです
お礼
ありがとうございます まさにやりたいことでした 本当にありがとうございました