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

VBAをはじめたばかりの初心者です。
業務でマクロ処理をするよう言われましたが、苦戦しております。
なんとか今週中にしあげなければならない状況で、ご存知の方がいらっしゃれば助けていただければと思います。

1行目・・・項目が記載されています。
2行目以降・・・A列~G列・I~K列に住所などの情報があり、H列とL列にはとある計算式をいれています。
件数は約500件(500行)程度で、毎回変更します。

H2とL2に計算式を入れて、
セルH2の値をH3にコピー、セルL2の値をL3にコピーするマクロが自動記録で次のようにできました。
Range("H2").Select
Selection.Copy
Range("H3").Select
ActiveSheet.Paste
Range("L2").Select
Application.CutCopyMode = False
Selection.Copy
Range("L3").Select
ActiveSheet.Paste

これを、H4・L4、H5・L5・・・・と繰り返してコピーをしていき、データがなくなったらループを修了するという記述をしたいのですが、わかりません。
いろいろネットで探してみたのですが、データ数を指定するやり方(?)ではなく、「Do~Loop」を使った方法でやりたいと思っております。

どなたか教えていただけませんでしょうか。
宜しくお願いいたします。

A 回答 (4件)

方法はいくつかあると思いますが。

。。

'-------------------------------------
Sub Test1()
 Dim Lastrow As Long
 Lastrow = Cells(Rows.Count, "A").End(xlUp).Row
 Range("H2").AutoFill Range("H2:H" & Lastrow)
 Range("L2").AutoFill Range("L2:L" & Lastrow)
End Sub
'--------------------------------------
Sub Test2()
 Dim Lastrow As Long
 Lastrow = Cells(Rows.Count, "A").End(xlUp).Row
 Range("H2").Copy Range("H3:H" & Lastrow)
 Range("L2").Copy Range("L3:L" & Lastrow)
End Sub
'-----------------------------------
Sub Test3()
 Dim R As Long
 For R = 3 To Cells(Rows.Count, "A").End(xlUp).Row
   Range("H2").Copy Cells(R, "H")
   Range("L2").Copy Cells(R, "L")
 Next R
End Sub
'---------------------------------

A列のデータで最終行を判断してます。
 
    • good
    • 3
この回答へのお礼

こんばんわ。

いろんな記述があるのですね。
直感で(?) Test3を試したところ、無事うまくいきました!
実は、HとLだけでなくコピーしたい列が複数ありましたので、
「Range("H2").Copy Cells(R, "H")」のように、
1行でシンプルに記述する方法は、とってもうれしいです!

本当にありがとうございます。

お礼日時:2009/05/12 22:40

もう一つ、以下の操作も「マクロの記録」をしてみてください。



H2に数式を入れ、その後、記録スタートするとします。
1.H2~H10を選択(マウスを使っても、キーボードのShift+↓を使ってもOKです)
2.Ctrl+d


後はマクロの記録には出てきませんが、RangeやCellsを上手く使えばできます。
実際のデータを見ていないので確かなことは言えませんが、Do~Loopや For~to~Nextなどは使わなくてもできると思います。
    • good
    • 0
この回答へのお礼

こんばんわ。
たびたびありがとうございます。

Ctrl+dは、知りませんでした!
これは大変使えそうです。
Do~Loopや For~to~Nextを使わずにするやり方も習得したいと思います。

ありがとうございます。

お礼日時:2009/05/12 22:37

せっかく「Do~Loop」にまで到達しているならヘルプを見て自分で考えるのがBestです。


VBAからヘルプを呼び出し、目次から
Visual Basic プログラミングのヒント→Do...Loop ステートメントの使い方
に詳しく書いています。
    • good
    • 0
この回答へのお礼

こんばんわ。
ヘルプがあるんですね!
いろいろ用語がわからず困っていましたので、
助かります。

ありがとうございます。

お礼日時:2009/05/12 22:36

こんばんは



以下の操作を「マクロの記録」してみてください。
1.A列の一番下のセルを選択
2.Ctrlキーを押しながら↑キーを押す。

マクロの記録ですともう少し長い記述となりますが、自分でVBAを書くと以下のようになります。
Cells(Rows.Count, "A").End (xlUp)


[A65536]を使わないのはバージョンが2003以前と2007のどちらでも対応できるようにするためです(もっとも、いずれの場合にも最後の行までデータを入れることはないという前提です)。

最後の行を知りたい場合には、
Cells(Rows.Count, "A").End(xlUp).Row
とします。
    • good
    • 0
この回答へのお礼

こんばんは。
早速のご回答ありがとうございます。
「End (xlUp)」を初めて知りました。
大変便利で、応用がききそうです。バージョンによっても記述が違うのですね・・・。

ありがとうございます。

お礼日時:2009/05/12 22:35

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

このQ&Aを見た人はこんなQ&Aも見ています