- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ブックのすべてのシート名を取得するコード)
ブックのすべてのシート名を取得するコードの間違い
このQ&Aのポイント
- ブックのすべてのシート名を取得するためのコードを考えていますが、一番左のシート名しか取得できません。コードは「Sub test01()」から始まり、「For Each x In Workbooks」の部分でループが実行されています。しかし、実行結果を表示する部分の「Debug.Print ActiveSheet.Name」が誤っており、一番左のシート名しか表示されない原因となっています。
- 試しに「Workbooks」の部分を「ThisWorkbook」に変更してみましたが、実行時エラーが発生しました。これは、コードが実行されているワークブックではなく、別のワークブックに対して処理を行おうとしたためです。正しく実行するためには、元の「Workbooks」のままで記述する必要があります。
- ブックのすべてのシート名を取得するコードを正しく動作させるためには、ループの中でシート名を取得するためのコードを追加する必要があります。具体的には、「Debug.Print x.Name」というコードをループ内に追加することで、ワークブックの全てのシート名を表示することができます。このように修正することで、コードが期待通りに動作するようになります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
スコープがデタラメです。 sub macro1() dim w as worksheet for each w in worksheets msgbox w.name next end sub
その他の回答 (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から」かも。
質問者
お礼
Sub Test() Dim nCounter As Long For nCounter = 1 To ThisWorkbook.Sheets.Count Debug.Print ThisWorkbook.Sheets(nCounter).Name Next nCounter End Sub にしたら、うまくいきました!ありがとうございました。
お礼
出来ました。ありがとうございました。