• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ブックのすべてのシート名を取得するコード)

ブックのすべてのシート名を取得するコードの間違い

このQ&Aのポイント
  • ブックのすべてのシート名を取得するためのコードを考えていますが、一番左のシート名しか取得できません。コードは「Sub test01()」から始まり、「For Each x In Workbooks」の部分でループが実行されています。しかし、実行結果を表示する部分の「Debug.Print ActiveSheet.Name」が誤っており、一番左のシート名しか表示されない原因となっています。
  • 試しに「Workbooks」の部分を「ThisWorkbook」に変更してみましたが、実行時エラーが発生しました。これは、コードが実行されているワークブックではなく、別のワークブックに対して処理を行おうとしたためです。正しく実行するためには、元の「Workbooks」のままで記述する必要があります。
  • ブックのすべてのシート名を取得するコードを正しく動作させるためには、ループの中でシート名を取得するためのコードを追加する必要があります。具体的には、「Debug.Print x.Name」というコードをループ内に追加することで、ワークブックの全てのシート名を表示することができます。このように修正することで、コードが期待通りに動作するようになります。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

スコープがデタラメです。 sub macro1()  dim w as worksheet  for each w in worksheets   msgbox w.name  next end sub

mjuikjhy8
質問者

お礼

出来ました。ありがとうございました。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

sub Test()  dim nCounter as long  for nCounter = 0 to thisworkbook.sheets.count   debug,print thisworkbook.sheets(nCounter).name  next nCounter end sub テストしてないので、「forは1から」かも。

mjuikjhy8
質問者

お礼

Sub Test() Dim nCounter As Long For nCounter = 1 To ThisWorkbook.Sheets.Count Debug.Print ThisWorkbook.Sheets(nCounter).Name Next nCounter End Sub にしたら、うまくいきました!ありがとうございました。

関連するQ&A

専門家に質問してみよう