- ベストアンサー
エクセル VBA初心者です
エクセルでマクロを設定したいのですが、まだ初心者なのでVBAはほとんど書けません。 たとえば、A1セルの値をコピーして、一番最後のシートのA1セルに貼り付けるという作業を、始めのシートから最後から2番目のシートまで実行したいと思います。最後のシートにはA1からA2、A3、A4・・・のようにどんどん下に貼り付けていきたいのです。特にシートの名前を指定するのではなく、一番左から、最後から2番目までのシートまで、シートの数に関わらず実行したいのですが。。。 いろいろ本を見て調べたのですが、シートを指定して移動するのとかは書いてあったのですが、こういう場合はどうすればよいのでしょうか、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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
その他の回答 (1)
- toshi_2000
- ベストアンサー率30% (306/1002)
シートは、名前でなくてもシートの番号(例えば、sheets(1))で参照できます。 シートの数は、sheets.count で分かります。 セルとの組み合わせなら sheets(1).cells(1,1) とすると1番目のシートのA1セルを示します。(値のセットも参照も可能です)