• ベストアンサー

Excel VBAで、ある名前のワークシートが存在するかを調べるには?

VBA初心者です。 例えば、開いているブックの中に「Sheet4」が存在するかどうかを調べ、無い場合にだけ「Sheet4」を挿入するには、どのように記述すればよいのでしょうか? よろしくお願いします。

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

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

こんにちは。 だいたい、こんなに感じでよいと思います。 Sub TestSample() Dim sh As Worksheet With ActiveWorkbook Const ShName As String = "Sheet4" For Each sh In .Sheets  If sh.Name = ShName Then MsgBox "既に" & ShName & "はあります。": Exit Sub Next sh  .Worksheets.Add After:=.Sheets(.Sheets.Count)  ActiveSheet.Name = ShName End With End Sub ただ、簡単な方法は、エラー・トラップを使ってもよいと思います。 >シートの追加方法ですが、「Meキーワードの使用方法が不正です。」 Me は、曖昧です。なるべく明示的に使ったほうがよいです。

mumu001
質問者

お礼

お返事ありがとうございます。 For Each・・・In・・・ Next・・・ と言う記述方法があるのですね。勉強になりました。 なんとか、目的のものが作れそうです。感謝です。

その他の回答 (1)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

そうねぇ。 For i = 1 to WorkSheets.Count step1 if WorkSheets(i).Name = "Sheet4" then Msgbox "Found" end if next とか msgbox WorkSheets("Sheet4").Name で、エラーが発生すれば無い、普通に素通りすればある、 とか、そのへんで存在チェックはできそうやね。あと、シートを追加して、名前をSheet4にするのは Set s = Me.Worksheets.Add s.Name = "Sheet4" という方法はどうだろう。

mumu001
質問者

お礼

素早いお返事ありがとうございます。 検索は1番目の方法で上手くいきました!(感謝) シートの追加方法ですが、「Meキーワードの使用方法が不正です。」と表示されます。(すみません。よく分かりません。)

関連するQ&A

  • Excel VBAで任意の名前のシートが存在するか調べたい。

    VBAコード内で、変数を使ってシート名をつけて挿入しようとしていますが、 その前に、その変数の名前を使ったシートがそのファイル内(ブック内)に あるかどうかを調べるようなコードはありますか?

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

    エクセルで作った『ひな型』のシートを同じワークブック内に、 1号,2号,3号・・・と挿入したいのですが VBAの初心者につきさっぱりわからないので 誰かアドバイスください。

  • EXCEL  VBA シートコピー、名前変更他

    EXCEL  VBA (1)シートコピー、名前変更 (2)他の固定のbookへ転送をVBAで記述 book1のsheet1を開き、そのsheetをコピーしたものをABCというsheet名に替え、 それをbook2のsheetの後ろへ移動するというマクロをPersonalに作ろうとしていますが、 インデックスエラーとか【アプリケーション定義または、オブジェクト定義のエラー】とかインデックスエラーとか になります。 book1のsheet1とかは、マクロを使う場合は、固定的な名前でなくいろいろそのときどきでかわる名前ですが、 マクロを使って、そのsheetをコピーしたものをABCとしてbook2のsheetの後ろへ移動したいということです。 よろしくお願いします。

  • VBAでブック内のワークシートを名前をつけて保存

    エクセルVBAで作業中のブックの一部のワークシート(2枚)を名前をつけて保存する方法を教えてください。 (例)  《ブックA》  sheet1 sheet2     sheet3 10/5     10個 10,000円    4個 25,000円 東京     25個 18,500円    6個 42,000円 というブックから『10/5 東京』というブックでsheet2,sheet3の内容を 保存したいのですが・・・ VBAは勉強し始めでほとんどわからないので教えてください。

  • エクセルVBAの処理でブックの中に複数のシートがあり、そのシート名と同

    エクセルVBAの処理でブックの中に複数のシートがあり、そのシート名と同じ名前の他のブックにそのシートを順々に挿入していきたいのですがどうすればよいのでしょうか。 宜しくお願い致します。

  • 新たなワークシートへのコピペVBA

    (1)Excelの一つのBOOKの中に複数のワークシートがあります。 (2)これらワークシートの中から、任意でいくつかのみを選びます。 (3)新たなワークシートを一つ作り、ここに、(2)で選んだワークシートを順番に横並びでコペピする。 上記をVBAで自動化させるには、どうしたらよろしいのですか?

  • VBA グラフの存在の判定について

    お世話になります。 現在VBAの勉強を行っているのですが、グラフについてどうぞ知恵をお貸しください。 エクセルの操作でグラフを作成した後、そのシートもしくはブックにグラフが存在するかどうかを確かめる判定式を作りたいと思っています。 グラフそのものが存在するかどうかの判定をしたい場合、どのような記述が必要になるのでしょうか?

  • EXCEL VBA ワークシートのコピーについて

    seaclearsky8です。 一つのブックに何枚ものワークシートを追加して保存するVBAについて ご教授、よろしくお願いします。 コピー元  MASTER Book MASTER Workseets コピー先 Copy Book copy Worksheets コピー元にはワークシートがMASTERワークシートの一枚しかありません。 その一枚のワークシートに値をVBAで入れていき処理し コピー先のコピーBOOKにワークシートをコピーしていきたいです。 しかし、MASTERBOOKの処理が何通りかあり、 コピー元の一枚のワークシートに 処理別にデータを写し コピー先BOOKに          ワークシート名 ワークシート1 処理1ワークシート  ワークシート2 処理2ワークシート ワークシート3 処理3コピー元ワークシート3 という具合にワークシートを複数コピーしたいのですが 処理ごとにデータを代入し、コピー処理はできるのですが。 コピー先BOOK ワークシート3 処理3ワークシート だけしかコピーされてないBOOKが作成されます。 上書きされているのだと思われます。 対処法が調べましたが見つけられていません。 すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

  • EXCEL VBA ワークシートのコピーについて

    seaclearsky8です。 一つのブックに何枚ものワークシートを追加して保存するVBAについて ご教授、よろしくお願いします。 コピー元  MASTER Book MASTER Workseets コピー先 Copy Book copy Worksheets コピー元にはワークシートがMASTERワークシートの一枚しかありません。 その一枚のワークシートに値をVBAで入れていき処理し コピー先のコピーBOOKにワークシートをコピーしていきたいです。 しかし、MASTERBOOKの処理が何通りかあり、 コピー元の一枚のワークシートに 処理別にデータを写し コピー先BOOKに          ワークシート名 ワークシート1 処理1ワークシート  ワークシート2 処理2ワークシート ワークシート3 処理3ワークシート という具合にワークシートを複数コピーしたいのですが 処理ごとにデータを代入し、コピー処理はできるのですが。 コピー先BOOK ワークシート3 処理3ワークシート だけしかコピーされてないBOOKが作成されます。 上書きされているのだと思われます。 対処法が調べましたが見つけられていません。 すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

  • EXCEL2007 VBA アクティブでないワークシートの名前を取得したい

    Sheet1とSheet2の【A1セル】【B1セル】には以下の処理が入っています。また2つのシートにはVBAを使って、再計算がされるたびに自身のシート名を表示するメッセージボックスを出力する処理を記述しています。 【A1セル】  リアルタイムで値が送られてくる。 【B1セル】  A1セルの値を使った式 【VBA】  Private Sub Worksheet_Calculate()   MsgBox **************  End Sub ここからが質問なんですが、Sheet3をアクティブシートにしている場合、VBAの「*****」の部分に何と記述すれば、再計算されたシート名を取得できますか?

専門家に質問してみよう