• ベストアンサー

Excel VBA シート名をすべて取得し、一覧をシートに入力したい

Excelで、トップのシートに、 他のシート名をすべて取得しセルに入力したいと思っています。 VBAを使って、それをワンボタンでやるようにできないかなと 思ったのですが、コードがうまく書けません。 ヒントいただけたらうれしいです。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

ヒントではなくて、回答の一つかも。 コードは自分で読んでみて下さい。 Sub test() Dim ws As Worksheet For Each ws In Worksheets Cells(ws.Index, 1) = ws.Name Next End Sub

noname#101292
質問者

お礼

ありがとうございます。 参考にさせていただきました。 ただ、・・・申し訳ないのですが、調べてみても ここでのIndexの使われ方がよくわかりませんでしたので、 ご教示くださると幸いです。

その他の回答 (3)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.4

>ここでのIndexの使われ方がよくわかりませんでしたので、 通常は下記のようにするのが一般的かも知れません。 変数(i)を使ってカウンターを作って記入行を設定(カウントアップ)しますが、代わりに Index で得られる数値(シート番号)を利用しただけです。 Sub test() Dim ws As Worksheet Dim i as Integer i=0 For Each ws In Worksheets i=i+1 Cells(i, 1) = ws.Name Next End Sub #2さんは、For 文で N をカウントアップしていますが、For Each 文ではそのようなカウンター無いので、自前でカウンターを用意する事になります。 その代わり、指定されたオブジェクトを順々に指定の変数に受け取って高速に処理する事が出来ます。

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.2

ヒントです。(限りなく回答に近い) Sub TEST() For N = 1 To Worksheets.Count Open_Sheet = Worksheets(N).Name Range("A1").Offset(N, 0).Value = Open_Sheet Next N End Sub

noname#101292
質問者

お礼

ありがとうございます。 大変参考になりました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

以下のサイトを参照して下さい。

参考URL:
http://www2.odn.ne.jp/excel/waza/macro.html#SEC10
noname#101292
質問者

お礼

ありがとうございます。 少し改造して使わせていただきました。

関連するQ&A

専門家に質問してみよう