全シートを選択し、それぞれ特定のセルの値をシート名とするマクロを教えてください。
Worksheets.Select
ActiveSheet.Name = Range("A1").Value
ではダメなんですね…
記録マクロ以上のことはほとんど何もわからない、マクロ初心者です。
条件としては、
・シート数はその都度変わる
・シート名にしたいセル番地は決まっている
です。
具体的には、「請求書」などの決まったフォーマットで作成された複数のシートがあり、
決まったセルに入力された「宛名」をそれぞれのシート名にしたい
というような場合です。
また、同じ「宛名」で複数のシート名があったときに備えて、
新しいシート名の前に数字を振りたいです。
例)
Sheet 1 → 1田中様
Sheet 2 → 2佐藤様
Sheet 3 → 3山田様
Sheet 4 → 4鈴木様
Sheet 5 → 5山田様
のように。
数字は識別できればいいので(エラーがでなければいいので)、なんでも構いません。
シートに順に番号を振るのでも、元のシート名の一番右を取るのでもいいです。
(そんなマクロがあるのかもわからないのですが)
宛名が複数あるものだけ選んで番号を振るのでもいいのですが、大変そうな気がするので・・・
マクロ自体よくわかっていないので、情報が不足しているかもしれませんが、
詳しい方、教えてください。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
こんばんは!
ごく単純にやってみました。
Sheetは1からあるとし、Sheet名はA1セルの名前にするようにしています。
↓のコードを標準モジュールにコピー&ペーストしてマクロを実行してみてください。
Sub test()
Dim i As Long
For i = 1 To Worksheets.Count
Worksheets(i).Name = i & Worksheets(i).Cells(1, 1).Value
Next i
End Sub
「決まったセル」が別セルであれば、コード内の
Cells(1, 1) の部分を変更してみてください。
以上、この程度ですが
参考になれば幸いです。m(__)m
おぉ~ すごい!
まさに希望通りの結果が得られました!
しかも、思ったよりずいぶんスッキリしてるんですね・・・
CELL関数やRIGHT関数と組み合わせて、
最初のシート名をどっかのセルに反映させてから、「宛名」とつなげてシート名にする
・・・とかじゃないとムリかなあと思ってました。
ありがとうございました。
便利になります。
No.3
- 回答日時:
仮の、発展しての話ですが
「名前とその連番」にした方が使いやすいのならこのタイミングで確認したらと思います。
さらに応用で、VBAでシート並べ替えもすれば宛名でならびますし、山田様だけの2シートを印刷ということがあればやりやすいかと思います。
No.2
- 回答日時:
良く使うコードです。
いまシートが存在する以上、そのシートに何らかの名前が付いている。
Sub test01()
Dim sh As Worksheet
For Each sh In Worksheets
MsgBox sh.Name
Next
End Sub
これを実行するとシート名が全部捉えられるのが実感できるだろう。
>全シートを選択し、をする必要もないし、アクチブにする必要もない。
これをその各々のシートのA1セルに入っている文字列でシート名を変更することになる。そう考えるのだ。
Sub etst02()
Dim sh As Worksheet
For Each sh In Worksheets
MsgBox sh.Name
sn = sh.Range("A1").Value
On Error GoTo err
p1:
sh.Name = sn
Next
Exit Sub
err:
sn = InputBox(sn & " はダブル。名前は")
GoTo p1
End Sub
先頭に番号振るのは個人的に反対。
其れで上記のようにした。
ーー
ただね、シートの挿入があるとこのプログラムが走るわけではない。
だから使うタイミングを考えないとだめなわけだ。
ーー
シート挿入はイベントで捉えられて
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox "挿入"
End Sub
なのだが、初心者には難しすぎるし、イベントが起こったときはまだA1セルに入力以前だ。
だから別途コードを考えないといけない。
上記の
sn = InputBox(sn & " はダブル。名前は")
が参考になって
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox "挿入"
sn = InputBox("シート名前は")
Sh.Range("A1") = sn
Sh.Name = sn
End Sub
どんどん他の事項に波及していく。マクロ初心者にはむりだ。
ただし本件限りでは、上記のThiswokbookのイベントを書くべきところ(画面)を勉強してみて。
Google照会「Thisworkbokk イベント」
これらは経験(解説書を読むのも含めて)でしかえられない。
返信が遅くなり、申し訳ありません。
正直なところ、VBAがほとんどわからないので難し過ぎたのですが、
先日入門書を買って勉強し始めました。
もう少ししたら、理解できるようになるかと思います。
がんばってみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
高校生はアルバイトするべきだろうか?賛成だったら「賛」、否定だったら「否」を文頭においてあなたの意見を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
自動で複数セルの内容をシート名にする
Excel(エクセル)
-
ExcelVBA シート名を複数セルから取得して変更
Visual Basic(VBA)
-
シート名をセルの値からもってくるには・・・
Excel(エクセル)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
エクセルVBAでパスの¥マークに...
-
別シート参照のセルをシート毎...
-
前の(左隣の)シートを連続参...
-
Excelで金銭出納帳。繰越残高を...
-
Excelのシートを、まとめて表示...
-
VBAでシートコピー後、シート名...
-
エクセルで複数設定したハイパーリンク先...
-
シートの保護のあとセルの列、...
-
Accessのスプレッドシートエク...
-
エクセルで「ウィンドウを元の...
-
EXCEL:同じセルへどんどん足し...
-
エクセルで毎回1枚目のシートを...
-
EXCELで1ヶ月分の連続した日付...
-
エクセルでシートを移動しても...
-
VBAで条件によりフォントサイズ...
-
シート1に列挙したNGワードを...
-
特定のシートの削除を禁止した...
-
エクセルでファイルを開いたと...
-
エクセルif関数で、複数のシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
別シート参照のセルをシート毎...
-
エクセルVBAでパスの¥マークに...
-
Excelで金銭出納帳。繰越残高を...
-
Excelで同じシートのコピーを一...
-
Excelのシートを、まとめて表示...
-
エクセルでファイルを開いたと...
-
Accessのスプレッドシートエク...
-
前の(左隣の)シートを連続参...
-
VBAでシートコピー後、シート名...
-
EXCEL:同じセルへどんどん足し...
-
EXCELで同一フォーマットのシー...
-
シートの保護のあとセルの列、...
-
EXCELで1ヶ月分の連続した日付...
-
エクセルで複数設定したハイパーリンク先...
-
複数シートの特定の位置に連番...
-
エクセルでファイル保存時に複...
-
特定のシートの削除を禁止した...
-
エクセルで前シートを参照して...
-
Excel、同じフォルダ内のExcel...
おすすめ情報