• ベストアンサー

エクセルでシートを挿入の際

エクセルでシートを挿入すると sheetの後に続く番号が一ずつ増えていきますよね その後でシートの名前を変更したり 別のシートを 削除して また挿入しても番号は増え続けていきますが そういうことがないように マクロでの記述で 「シート名を指定して 新規シートを追加  (挿入)」 するにはどのような記述をしたら よいでしょうか?

  • ennkai
  • お礼率54% (284/525)

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

  • ベストアンサー
  • boy_boy
  • ベストアンサー率55% (56/101)
回答No.1

こんにちは。 標準モジュールに Sub Test() Worksheets.Add(after:=Worksheets _ (Worksheets.Count)).Name = "ennkai" End Sub をコピペして「Test」を実行すると シート名「ennkai」と云う新規シートが ファイルの最後尾に挿入されます。 「"」と「"」で挟まれた部分に任意のシート名を 指定します。 ※変数を指定したり、セル参照したり「挿入位置」の  指定も出来ますが、取り合えず・・・。

ennkai
質問者

お礼

回答ありがとうございます シンプルな記述で私にも 大変わかりやすかったです 勉強になりました

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

misatoanna 様のコードと、同じ発想ですが、私の場合は、シート番号の最大値を取るものです。シートの数字の枝番は、親番号のみで下の数字は無視されます。 飛び番号 1,2,4 の場合は、3 ではなく、5になります。 '<ThisWorkbook登録のみ> Private Sub Workbook_NewSheet(ByVal Sh As Object) Dim ShNum As Variant Dim shMaxNum As Integer Dim i As Integer With ThisWorkbook  For i = 1 To .Sheets.Count   If .Sheets(i).Name Like "Sheet#*" Then   ShNum = Replace(.Sheets(i).Name, "Sheet", "")   If shMaxNum < Val(ShNum) Then    shMaxNum = Val(ShNum) 'シート番号の最大値   End If   End If  Next i  If Sh.Name <> "Sheet" & CStr(shMaxNum + 1) Then   Sh.Name = "Sheet" & CStr(shMaxNum + 1)   .Sheets(Sh.Name).Move After:=Sheets(Sheets.Count)  End If End With End Sub

回答No.3

> シートの名前を変更・削除してまた挿入しても番号は増え続けていきます > シート名を指定して新規シートを追加 私からも稚拙なマクロ(テンプレートにして使っています)の例です。 シート名は指定できませんが、「"Sheetxx"形式で、重複しない最も小さい番号の シート名」で最後尾に追加します。 [Alt]を押しながら[F11]を押すと Visual Basic Editor が開きます。左端に表示 されている ThisWorkbook をダブルクリックして、右側の画面に下記をコピペして から、Visual Basic Editor を閉じます。 ' Private Sub Workbook_NewSheet(ByVal Sh As Object) Dim i, j ActiveSheet.Move After:=Sheets(Sheets.Count) i = 1 LP: For j = 1 To Sheets.Count - 1 If "Sheet" & i = Sheets(j).Name Then i = i + 1 GoTo LP End If Next j ActiveSheet.Name = "Sheet" & i End Sub ' シートを挿入すると自動的に処理されます。

  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.2

こんなのはいかがでしょう。実行するとシート名を尋ねるボックスが表示されます。 標準モジュールに以下を貼り付けます。 'ここから------------------------------------------------------------------------------------------ Sub シート名を指定して追加()   On Error Resume Next   Do     Err.Clear     ShNam$ = InputBox("追加したいシート名を記入", "シート作成", "Sheet" & Worksheets.Count + 1)     If ShNam = "" Then Exit Sub     Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = ShNam     If Err <> 0 Then       Application.DisplayAlerts = False       Worksheets(Worksheets.Count).Delete       Application.DisplayAlerts = True       MsgBox Err.Description     End If   Loop While Err <> 0 End Sub 'ここまで------------------------------------------------------------------------------------------ 「標準モジュールに貼り付ける」方法がわからないときは、以下の方法でお試しを。 1) ツール-マクロ-マクロの記録 で出てきたウィンドウの、「マクロ名(M)」と書かれた欄に、   「シート名を指定して追加」と書き込んで、「OK」をクリックしてください。 2) 画面に、「■」の描かれたボタンと、何か表みたいな絵の描かれたボタンの2つのボタンだけの   ツールボタンが表示されるので、「■」のボタンを押します。   これでマクロの記録が終了します。つまり何も記録せずに終了したことになります。 3) AltキーとF8キーを同時に押して「マクロ」ウィンドウを開きます。 4) 「シート名を指定して追加」を選択し、右の「編集(E)」ボタンをクリックしてください。 5) 「Microsoft Visual Basic」というウィンドウが新たに立ち上がり、  Sub シート名を指定して追加()   '   ' シート名を指定して追加 Macro   ' マクロ記録日 : 2005/5/7 ユーザー名 : ○○ ○○   '   '  End Sub と表示されているはずです。 6)このSub 担当別シート作成()と書かれている行と、End Subと書かれている行の間に、   上の「ここから」から、「ここまで」を貼り付けます。   (実際は、一番上の行と、一番下の行が同じことが書いてあってかぶっているので、   一番上の行と一番下の行はコピーしなくても結構です) 7) Microsoft Visual Basicウィンドウを閉じます。 8) 後はマクロを実行するのみ。

ennkai
質問者

お礼

回答ありがとうございました すでに存在するシート名を入力すると エラー回避まで記述してくださって マクロ勉強中の私には大変勉強になります! また何かありましたらよろしくお願いします

関連するQ&A

  • シート名変更のマクロ

    QNo.4400605『エクセルでシート数を指定して挿入するマクロはどうやって作ったらいいでしょうか。例えばA1セルに挿入したいシートの数を入力するとその数のシートが作成されるというようなマクロを作りたいのですが』という質問をしてそれについては解決しましたが、作成されたシートの名前を1~40のような数字に変更するマクロが分かりません。作成するシートの枚数は決まってなく、25シートであったり、40シートだったりします。A1:A40に1~40と変更後のシート名を入力して、それをシート名に反映させるマクロは作れたのですが、毎回シート枚数が変わるので「インデックスが有効範囲にありません」と出てしまいます。型としては、元シートがあり、そこでシート数を指定しシートを挿入し、そのできたシートに数字の名前をつけたいと考えています。長々なりましたが教えて下さい。

  • ExcelのSheetに作られたMacro1について

    EXCELのシート画面で、Alt+F11を押して、Workbookのイベントによって起動するマクロを記述するモジュールシートを開き、マクロを貼り付けました。 確かに、エクセルを開くと同時にマクロが起動します。便利でびっくりしています。 ところで、これと同時に、Macro1という名のシートが自動的に作成されました。これがわかりません。無視してもかまわないでしょうか。うっかり普通のシートのSheet1などと勘違いして書き込みをしたり、名前を変えたり、削除したりしそうです。もしそうしたらどうなりますか。不都合がありますか。 よろしくお願いします。

  • エクセルのシートについて

    エクセルでシート数を指定して挿入するマクロはどうやって作ったらいいでしょうか。 例えばA1セルに挿入したいシートの数を入力するとその数のシートが作成されるというようなマクロを作りたいのですが・・・

  • excel97で、一番右側に新しいシートを挿入させたい

    excel97で、「挿入」→「ワークシート」を選択すると、アクティブになっているsheetの前(シート見出し左側)に新しいシートが挿入されますが、大抵新しいsheetを挿入したいのは、一番後ろ(画面向かって一番右側)なので、そのあと移動させたりしなければならず面倒です。マクロ以外で一発で「一番後ろ(右側)に新しいワークシートを出す」ことは出来ないでしょうか? 宜しくお願い致します。

  • 指定したシート間にシートを挿入

    シートを挿入するマクロを作っていますが、挿入する場所を指定することはできるでしょうか? 「最終シートの前に挿入」と「最終シートの後に挿入」はできるのですが、「"START"と"END"の間に挿入」ということがどうやればいいのか分かりません。教えて下さい。

  • エクセルのワークシート挿入について

    どなたか教えてください。 エクセルでワークシートを増やしたくて、「挿入」から「ワークシート」をクリックすると、 「'ワークシート.xls'が見つかりません。ファイル名およびファイルの保存場所が正しいかどうか確認してください。[ファイル]メニューの最近使用したファイル一覧からファイルを開こうとしている場合は、そのファイルの名前が変更されていないこと、移動又は削除されていないことを確認してください」 というエラーメッセージが出てしまいます。何が起こってしまったのか良くわからないのですが、治りますか・・・? Windows2000を使用しています。PCはコンパックのものです。 宜しくお願いします。

  • excel、マクロについて教えてください。

    excel、マクロについて教えてください。 excelのマクロでシートを追加してシート名を変更し棚卸しに変更する内容を記録したのですが、 excelをずっと使用していてシートを追加していくとsheet1、sheet2と語尾の数字が増えていってしまい、マクロが正常に動作しません。 excelのシートを追加した際に必ずsheet1で追加する方法、若しくはマクロを記録した時はsheet1の名前を変更だったがsheet2でもsheet3でも動作するようなコードは存在しますか? 最近マクロをやり始めた初心者なので、質問が下手かもしれませんがどなたかお分かりになりましたら 教えていただけませんか?よろしくお願いします。

  • エクセルでシートを追加するマクロについて

    マクロ初心者ですよろしくお願いします エクセルでシート1は名前などの入力用、シート2はフォーム用として作成しております シート1のA1から最大でA20(変動あり)に名前を入力すると名前の数だけシート2のコピーが追加され、シート名も入力した名前に変更する場合のマクロはどうすれば良いのでしょうか? またシート2のB1にも入力した名前を表示させたいです ご教授お願いいたします

  • EXCELで切り取った行を別シートに挿入

    EXCELである行を選択して切り取り、同一シート内の任意の場所に挿入すると 元の行は自動的に削除されます。 しかし、別シートに挿入した時は、元の行は削除されず、わざわざ その行を削除する、という操作が必要となります。 そこで質問なのですが、別シートへの挿入を一つの操作で行う方法はないでしょうか? また、その方法がない場合、それはEXCELの何らかの仕様を反映しているのだと 思いますが、それはどのようなものでしょうか? よろしくお願いします。

  • Excelのマクロでシートを追加する際のエラー対策

    久しぶりにExcelのマクロについて 質問させていただきます。 Sub シート追加() Dim シート名 As String, シート確認 As Worksheet シート名 = InputBox("シート名を入力してください") For Each シート確認 In Worksheets If シート確認.Name = シート名 Then MsgBox "同じ名前のシートがあります", vbCritical Call シート追加 End If Next ActiveSheet.Copy before:=ActiveSheet ActiveSheet.Name = シート名 End Sub 作ったマクロをごくシンプルにして 記載させていただきました。 これにより、シート名を付けて 次々とシートを追加しているのです。 問題は、すでに同じ名前のシートがあった場合です。 うっかり同じ名前を入力しても 「同じ名前のシートがあります」と表示され 「OK」を押すと改めて 「シート名を入力してください」 と表示されるようにしました。 しかし、なぜかこの場合 新たに入力したシート名でシートが作られるだけでなく そのシート名に「(2)」が付いたシートまで作られ 実行時エラー '1004': シートの名前をほかのシート、Visual Basic で参照されるオブジェクト ライブラリまたは ワークシートと同じ名前に変更することはできません。 というエラーが表示されてしまうのです。 Excel2010でもExcel2003でも同じでした。 ステップインでたどってみたのですが 「同じ名前のシートがあります」 が表示された場合 まだ使っていない名前のシートを作っても 黄色いままで「End Sub」から「End If」へ移ってしまいます。 ちなみに 「同じ名前のシートがあります」にならなければ 「End If」で終了したことになり 黄色は消えます。 詳しい方にはごく簡単なことなのでしょうが いろいろ検索しても答えは得られませんでした。 ご回答をよろしくお願いいたします。

専門家に質問してみよう