• ベストアンサー

セルのデータをマクロでシート名に反映させる方法は?

大変お世話になります。 Excelのセルに入力したデータをシート名に反映させたいのですが、 前回、QNo.3861407にて質問させてもらった時の回答は、 セルに入力するシートでしか反映されなかったのです。 それを、Sheet1に記載したデータをSheet2のシート名にも 反映させることは出来ますでしょうか? 下記式のActiveSheet.Name の部分をSheets(Sheet2).Select としてみたり、 色々調べて試してみたのですがうまくいきません。 前回にご回答頂いたマクロは下記の式です。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$2" Then ActiveSheet.Name = Range("A2").Value & "年度休日" End Sub 上記式だと、 そのシート自体のA2に入力してエンターを押せば、 シート名も反映されて変わるのですが、 変更したいシートが2枚ある為、 その2枚を同時に変更する方法を知りたいのです。 詳しく説明すると、 勤怠表を作成する際、 別シートに休日カレンダーを作り、 勤怠表に休日が反映されるようにしているのですが、 休日カレンダーが正社員用と契約社員用の2枚あり、 その休日カレンダーの一方のシート(シート名「正 2007年度休日」)の A2に2007と入れたときに、 もう一方のシート(シート名「契 2007年度休日」)も一緒に 変更することは可能でしょうか? 契約社員用のほうは「正 ~」のA2をリンクさせて 「契 ~」のA2に2007と年数が入るようにしているので A2セルは「正 ~」のシートのA2の年数を 2007と書き換えると「契 ~」のシートのA2も変わるのですが、 上記のマクロだと、「契 2007年休日」のシート上のA2をダブルクリックして 再計算させないと、「契 ~」のシート名が変わりません。 これを、「正 ~」のシートのA2を書き換えた時点で 「契 ~」のシート名も変えることは出来ますでしょうか? 分かる方、お教え下さい。宜しくお願い致します。

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

  • ベストアンサー
  • suz83238
  • ベストアンサー率30% (197/656)
回答No.1

条件として「契2007年休日」のシートが2枚目のとき Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$2" Then ActiveSheet.Name = Range("A2").Value & "年度休日" Sheets(2).Name = "契" & Range("A2").Value & "年度休日" End Sub でOKです。 3枚目ならSheets(3).Nameです。一定してないなら、シート名の一覧を取得して、条件式をたて、シート名を変更することになります。シートの位置が固定なら、上記でOKです。

guchi_yama
質問者

お礼

お礼が遅くなり申し訳ありません。 上記のマクロ式で出来ました。 分かりにくい説明文でありながら、ご理解頂き恐縮です。 本当にありがとうございました。 また何かありましたら宜しくお願い致します。

すると、全ての回答が全文表示されます。

その他の回答 (1)

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

質問文が長い。 その割りにわからないことがある。質問内容に対し、回答者には、余分なことも多い。 2つのシート名はどういう名前にしたいのか、ぐらい例で質問の初めの方にはっきり書くこと。 後半は 当然同じシート名になるはず無いから、A2セルの値の前後に何か文字列を加えるのだろうがそれは何か? >変更したいシートが2枚ある為 >その2枚を同時に変更する方法 下行に並べて書くだけではないの。 ーーー シートの特定の方法を勉強すること ActiveSheet方式 Worksheets(1)方式 Worksheets(名前)方式 直接方式 例 Sheet1.Name しかない。 ーーー シート2枚はSheet2,Sheet3とすると Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$2" Then Worksheets("Sheet2").Name = "正2007年度休日" Worksheets("Sheet3").Name = "契2007年度休日" End If End Sub このシート名の中でA2セルの値はどの部分を決めるの。 上記は1回実行すつとSheet2というシート(名)などがなくなって エラーになるがどう考えているの。セルのChangeイベントに「するのは無理があるのでは? ーー 上記のようなことではないの? したいことを具体的に順を追って、はっきり書いてほしい。

guchi_yama
質問者

お礼

いつもお世話になります。 説明不足で申し訳ありません。 シート名は、もともと"Sheet1"から"正 2007年度休日"などに書き換えており お察しの通り、imogasiさんのマクロでやると、 新しいブックの状態(シート名がSheet1の時)からは出来たのですが、 "正2007年度休日"と変換した後は、 "正2008年度休日"に変えようと思ってもエラーが出てしまいました。 その辺の説明が疎かで、 且つダラダラと分かりにくい状態であったにも関わらず ご回答頂き、 本当にありがとうございました。 これに懲りず、何かありましたらまたご回答下さいますよう 宜しくお願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A