こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル VBA初心者です

エクセルでマクロを設定したいのですが、まだ初心者なのでVBAはほとんど書けません。
たとえば、A1セルの値をコピーして、一番最後のシートのA1セルに貼り付けるという作業を、始めのシートから最後から2番目のシートまで実行したいと思います。最後のシートにはA1からA2、A3、A4・・・のようにどんどん下に貼り付けていきたいのです。特にシートの名前を指定するのではなく、一番左から、最後から2番目までのシートまで、シートの数に関わらず実行したいのですが。。。
いろいろ本を見て調べたのですが、シートを指定して移動するのとかは書いてあったのですが、こういう場合はどうすればよいのでしょうか、よろしくお願いします。

投稿日時 - 2006-10-15 20:39:56

QNo.2474697

すぐに回答ほしいです

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

Worksheets(1) が一番左のシートです。
Worksheets.Count でシート数が解ります。

シート構成が通常ならば、下記で一番左から最終ひとつ前までのシート名をメッセージ表示します。

Sub Test1()
Dim i As Integer
 For i = 1 To Worksheets.Count - 1
   MsgBox Worksheets(i).Name
 Next i
End Sub

次に最終シートに対して、A列の最後を取得しなければなりません。
A列最後は Range("A65536").End(xlup) と言うやり方で取得する事が多いです。
下記で最終シートのA列最終の一つ下のアドレスをメッセージ表示します。


Sub Test2()
 MsgBox Worksheets(Worksheets.count).Range("A65536").End(xlup).Offset(1,0).Address
End Sub

処理を合わせると、大体こんな感じ。

Sub Test3()
Dim i As Integer
 For i = 1 To Worksheets.Count - 1
   Worksheets(Worksheets.Count).Range("A65536").End(xlUp).Offset(1, 0).Value = _
      Worksheets(i).Range("A1").Value
 Next i
End Sub

投稿日時 - 2006-10-15 21:14:21

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

シートは、名前でなくてもシートの番号(例えば、sheets(1))で参照できます。
シートの数は、sheets.count で分かります。
セルとの組み合わせなら sheets(1).cells(1,1) とすると1番目のシートのA1セルを示します。(値のセットも参照も可能です)

投稿日時 - 2006-10-15 21:04:33

あなたにオススメの質問