質問: エクセルでシート名を自動入力したい。 いつもお世話になります。 エクセルのシート名の入力について質問です。 「a1」に「あああ」と入力したらシート1の 名前が「あああ」となるようにしたい。 さらに「b1」に「いいい」と入力したらシート2の 名前が「いいい」となるようにしたい。 この質問が↓近いのですが、a1のみ? http://oshiete1.goo.ne.jp/qa2025849.html a1、b1、c1・・・・もしくは、a1、a2、a3・・・と 行で続いても列で続いてもいいのですが・・・ 更にもう一つ質問がございます。 別のシートに連番を割り振ることは、可能でしょうか? 例えばシート1~シート20まで有るとします。 シート1のセルa5に「101」と数字を入力し シート2のセルa5には「102」、シート3のセルa5には「103」と 連番を一挙にコピーできますでしょうか? どうぞ宜しくお願い致します。
回答: a1、b1、c1...に入力された値をシート名にするマクロです。 シート名を入力するシートの「シート名タブ右クリック」→「コードの表示」で開く画面に貼り付けてください。シートに戻り値を入力するとシート名が変わります。 入力した列に対応するシートがないときや、シート名に使用できない値を入力したときはエラー表示しています private sub worksheet_change(byval target as range) on error goto err0 if target.row = 1 then if target.column > worksheets.count then msgbox ("対応するシートがありません") else worksheets(target.column).name = target.text end if end if exit sub err0: msgbox ("入力したシート名が不適切です") end sub 以下は後半部分のマクロです。こちらのマクロはalt+f11でvbe画面を開き、「vbaprojectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペーストして下さい。実行はシート画面に戻って、alt+f8を押してマクロ一覧からマクロ名(macro2)を選択して実行します。(実行は手動です。値を入れても自動では動きません) 連番の開始値を入力するシート名、セルアドレスは実際のものに変更してください。なお連番は整数値を想定しています。 sub macro2() dim idx, cnt as integer const sh as string = "aa" '連番のスタートを入力するシート const adr as string = "a5" '連番を入力するセル if isnumeric(sheets(sh).range(adr).value) then cnt = sheets(sh).range(adr).value for idx = 1 to worksheets.count if sheets(idx).name <> sh then cnt = cnt + 1 sheets(idx).range(adr).value = cnt end if next idx else msgbox ("開始値が数値ではありません") end if end sub でも質問の内容は「例えばこのセルに値を入力したら」という書き方ですから、たぶんこのままでは使えないかもしれませんね。その場合はご自身で修正をお願いします。