• ベストアンサー

【エクセル】各シートのB4の値をシート名にしたい

たびたびエクセルに関する質問で、失礼いたします。 各シートが30シートほどございます。 各シートの”B4”の値をそのシートのシート名にしたいです。 ですが、シート名が”元データ”と”ひな形”と名付けられているものに関しては ”B4”の値は適用せず、そのまま”元データ”と”ひな形”という名前にしておきたいです。 マクロ初心者のためインターネットで活用できそうなコードをいじってみましたが、 シート名が”元データ”と”ひな形”と名付けられているものに関しても、 ”B4”の値が適用されてしまいます。 お手数おかけいたしますが、ご教授いただけますでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

すでに良い回答が出ているが、 下記のようにステップを踏んで考えてやってみないと、質問者は、進歩しないと思う。 本件は例外がある部分だけ特殊なだけ。 >マクロ初心者のため なら下記を参考に 下記ステップを踏んで考えてはどうだろう。 シート名変更は、WEBで照会すればすぐわかる。「シート名変更 VBA」で検索。(「エクセル」は「シート」という言葉で暗示されている、ので、なくても良い) https://www.tipsfound.com/vba/10008 等多数。 (1)操作をして、マクロの記録を取る。1シート分 Sub Macro1() ' ' Macro1 Macro Sheets("Sheet1").Select Sheets("Sheet1").Name = "bbb" End Sub (2)多数シートの全シートに拡大。繰り返し構文。ForNextやForEach(既回答あり) Sub macro2() For i = 1 To Sheets.Count Sheets(i).Name = Sheets(i).Range("B4") Next i End Sub (3)例外分除外をVBAコードに織り込む。IF文で判別。 本件では例外分は、名前変更せず、何もしない。そのまま。 Sub macro3() For i = 1 To Sheets.Count If Sheets(i).Name = "元データ" Or Sheets(i).Name = "ひな形" Then Else Sheets(i).Name = Sheets(i).Range("B4") End If Next i End Sub

sachiko555
質問者

お礼

imogasi様 わたくしのエクセルの成長のことまで考えてくださり、 ありがとうございます。 順を追った説明で理解することができました。 助かりました。 重ねましてありがとうございます。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

参考に Sub Test()   Dim ws As Worksheet   For Each ws In ThisWorkbook.Worksheets     Select Case ws.Name       Case "元データ", "ひな形"       Case Else         ws.Name = ws.Range("B4").Value     End Select   Next End Sub

sachiko555
質問者

お礼

watabe007様 いつも素晴らしいご回答をありがとうございます。 watabe007様の御助けに感謝いたします。

関連するQ&A

  • EXCEL シート名の保護

    EXCEL シート名の保護 雛形となるワークシートを毎月コピーして使っているのですが、よくコピーを忘れて、気がついたら雛形シートに書き込んでしまっているミスが多発しています。 コピーした月毎のシートは、その後シート名をその月にし、マクロを実行するとその月の日付など細かな書式の変更が行われます。 マクロは、シート名がその月になっていないとエラーが出ます。にも関わらず雛形が書き換えられるということは、このミスを犯した人は、シートのコピーは忘れたけれどもシート名の書き換えは忘れなかったということです。(だったら、自分が書き換えようとしているシートの名前を見て気づけよ・・・) そこで、雛形シートのみ、シート名が書き換えられないようにすることは出来るでしょうか? とりあえず、   「ツール」→「保護」→「シートの保護」 を試みたのですが、保護項目を全てチェックしても、シート名の保護は出来ませんでした。 よろしくお願いします。

  • エクセルのセルの値をシート名にするマクロ

    エクセルで、例えばB2セルに入力された数字を使って自動でシート名にしたいのですが、(=そのセルの値が変更されたときに 自動的に シート名が変更されるマクロ )どうやったらよいのか良くわかりません。また、重複するシート名があった場合にはアラートを表示させたいです。 例: 1.B2セルに10と入力する 2.もしシート名に重複が無ければ、シート名が自動的に「10月」になり、アクティブセルはB2に戻って復帰する。 3.重複がある場合は「シート名に重複があります」等のアラートを表示して終了する 多分 イベントとかいうものが絡んでくるのでしょうが、マクロは時々使うのですが、いつも記録したものを手直しする程度なので、標準モジュールの部分しか触った事がありません。 どなたか教えてください。お願いします。

  • EXCEL VBAで別のシートに値を渡したいのですが・・・

    まず 例えば3行2列のセルに |A|10| |B|20| |C|30| というような値があるとします。 アルファベットにはそれぞれ次のような意味があり、 A=山 B=川 C=海 このデータを元に 別シート(山、川、海の3シート)に 山シート |NO.|10| 川シート |NO.|20| 海シート |NO.|30| と 1行2列のセルに値を渡したいのですが、 そういうことはエクセルで可能でしょうか? エクセルに詳しい方、どうぞご教授ください。 よろしくお願い致します。

  • ExcelでAシートとBシートの比較

    ExcelでAという正しいシートがあります。中味は大きなテーブルです。 Bシートも最終的にはAシート=Bシートの形にしたいのですが、諸事情でBの方は行が多かったり少なかったり、或いは、数値が異なっていたりします。列数は大丈夫です。 そこで、AとBを比較し、データがおかしいBの行にエラーを返したいのですが、何か適当な関数をご存知の方教えて下さい。 (例) 【Aシート】(正) 商品コード・商品名・単価・数量・価格 ab13467…シャツ…1,500…2…3,000 hj28888…スカート…2,000…3…6,000 【Bシート】 商品コード・商品名・単価・数量・価格 ab13467…シャツ…1,500…2…5,000 ←(エラーを出す)  hj28888…スカート…2,000…3…6,000 (※Aの商品コードは重複データなし、Bの商品コードは存在しない又は重複の可能性ありです。 Bは入手経路が異なる為に一部データがおかしくなっています。) 以上、わかりにくいかもしれませんが、何か手がかりでも頂ければと思います。但し、マクロは解らないので関数でお願いします。

  • シートコピーと値の転記 シート名変更マクロを

    エクセル2010で マクロのご教授をお願いいたします。 BOOK1の Sheet1 A1~A10に 数値1000が入力されているとして Sheet1のシートのコピーを作成 Sheet1にもどり A1~A3の値だけコピーして 作業列C1に 値を貼り付け A1~A10 をクリアーにしたのちに  ※↓が うまくいきません。 A1の値→ A8 A2の値→ A9 A3の値→ A10 に入力 させるマクロは どうなるでしょうか? マクロの記録で いろいろと やってみましたが どうも ※の部分が うまくいきません どう考えてもエクセルに対しての 理解不足だと思われますが、ご教授のほどお願いします。 おこなった自動マクロの記録は↓です。 マクロの記録開始する 名前 シートコピー Sheet1を右クリックして移動またコピー コピーを作成にチェックをいれ OK コピーシートが作成される。 Sheet1をクリックしなおして A1からA3をコピー  作業列として C1に 形式を選択して貼り付け 値 A1~A10を delete でクリア C1~C3を選択 コピー A8に 形式を選択して貼り付け 値 マクロの記録終了。 あと Sheet1をコピーするさいに シート名を前日の日付に自動的に変更できればと いいなと 考えておりますが できるのでしょうか? 例えば、本日でいえば シート名→ 0112 のような シート名を変更できればすてきだと おもいます。 どうぞ よろしくお願いします。

  • エクセルVBAでsheet1!B2:B10までの値をsheet2!B2

    エクセルVBAでsheet1!B2:B10までの値をsheet2!B2:K2にコピーする方法を教えて下さい。

  • EXCELでワークシートを検索して値を返したい。

    こんばんは。 いろいろ調べてみたのですが、わからなかったので質問させていただきます。 EXCELで「111」「222」「333」「444」「555」という五つのワークシート名を持つブックがあります。 「111」のシートのセル"A1"に,"222"と入力すると、隣のセル"A2"にシート「222」の特定のセルの値(例えばC20のセルの値)を返し、セル"A1"に「555」と入力するとセル"A2"にシート「555」の特定のセルの値を返すといったものを作るには、どうしたらいいんでしょうか? できれば関数だけで作りたいのですが、もしむりならマクロではどういうコードになるのでしょうか? よろしくお願いします。

  • セルA1値によってセルB1の値が変わる

    お世話になります。 たとえばA1に「本」と入れた場合B1に「1000」(金額や商品コードなど)、A2に「バッグ」と入れた場合B2に「800」と出るようにするにはどうすればいいでしょうか。(できれば同じシートのA1とB1ではなく、Sheet1のA1に入力した値によって、Sheet2のB1が変わるというの目標です。) あらかじめ別のシート(商品の種類が1000を超えるためシートを分けたほうがいい?)にAに入力する商品名とBに入るべき数字の対応表を作ろうと思っています。 それを活用してできるでしょうか? 質問のようにしてできたエクセルシートを活用して、販売ソフトに取り込みたいと考えています。

  • 一時的にファイル名、シート名を変えて処理することは出来ますか?

    VBAを勉強中で、分からないので教えてください。 2つのWorkbook間でCopy、Pasteを繰り返し、必要なデータ を一覧に書込みするマクロを作成する時 Excelデータ(同じフォーマットでセルに入っているデータが少し ずつ違う)で、異なるファイル名、異なるシート名になってしまって いるものをマクロで処理をしたいのですが、VBAで書き込む時 にはWorkbooks("○○").Worksheets("○○")と指定しなくて は動作してくれないので、どのように指定したらいいか困っています。 「直前にアクティブだったWorkbook指定する」「先頭に位置する sheetを指定する」なんてコードがあれば、一番いいのですが、 そういうコードはあるのかもわかりません。 最終的には"あるセル"に入っているファイル名で保存してしまう ので、一時的に仮ファイル名、仮シート名に変えて、後に削除 して処理をすればいいかなとが思うのですが、どうやって処理 したらいいのかわかりません。 やりたい事をうまく説明出来ているかわかりませんが、ファイル名、 シート名が違う元のデータから、一覧表へ書き込むマクロを組み たいのです。その際の元データの指定方法を知りたい or 一時的 に名前を変えて処理する方法を知りたいです。 一覧表へ書込みをした後にメールで添付してその元データ (”あるセル”にファイル名変更したもの)を送り返したいのですが、 メールへ添付する事までマクロで出来ると助かります。マクロで そこまで出来ますか?これも合わせて教えていただけたらと思います。 つたない説明ですみませんが、よろしくお願いします。

  • エクセル・マクロ・・・シート名の取得等

    エクセル・マクロ・・・シート名の取得等 エクセルのマクロで質問です。 ほぼ初心者です。 社内データの処理をしたいと考えています。 マクロを組みたいエクセルブックの構成としては・・・ シート名一覧 集計シート 操作 という3つのシートがあり、 その後ろに各社員のデータシートがあります。 山田太郎 田中花子 ・ ・ ・ 部署により社員数が異なるためシートの4枚目以降は そのエクセルファイルによりシート数が異なります。 やりたいことは以下の2点です。 (1)シート名(社員名)の取得 シート名一覧に各シート名を一行ずつ入れて 一覧を作りたいです。 シート名取得&リスト化のマクロは大体わかりますが、 「シート名一覧」、「集計シート」、「操作」の3つのシート名は 一覧から外したく、どうしたらいいのかわかりません。 また、各シート名を取得した列の横の列に 各社員のシートにあるデータの一部(セルC5:C8)を 貼り付けたいです。 (2)集計シートに各社員のシートのD列の情報(D6:D43)を順に貼り付けていく。 シート名や数が固定されたものであれば何とかできそうなのですが、 不特定になるとどうしたらよいかさっぱりわかりません。 どなたかご教授お願いいたします。

専門家に質問してみよう