アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

ヒントいただけたらうれしいです。

A 回答 (4件)

ヒントではなくて、回答の一つかも。


コードは自分で読んでみて下さい。

Sub test()
Dim ws As Worksheet
For Each ws In Worksheets
Cells(ws.Index, 1) = ws.Name
Next
End Sub
    • good
    • 3
この回答へのお礼

ありがとうございます。

参考にさせていただきました。

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

お礼日時:2007/02/07 21:11

>ここでの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 文ではそのようなカウンター無いので、自前でカウンターを用意する事になります。
その代わり、指定されたオブジェクトを順々に指定の変数に受け取って高速に処理する事が出来ます。
    • good
    • 4

ヒントです。

(限りなく回答に近い)

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
    • good
    • 2
この回答へのお礼

ありがとうございます。

大変参考になりました。

お礼日時:2007/02/07 20:55

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



参考URL:http://www2.odn.ne.jp/excel/waza/macro.html#SEC10
    • good
    • 1
この回答へのお礼

ありがとうございます。

少し改造して使わせていただきました。

お礼日時:2007/02/07 20:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!