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

こんばんわ。

いろんな記述があるのですね。
直感で(?) 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も見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qフリーソフトで、WAVファイルを音楽CD-Rにコピーして、カースレテオ

フリーソフトで、WAVファイルを音楽CD-Rにコピーして、カースレテオで再生できることを目指しています。どうも、この関係のソフトは、WAVファイルを音楽CD-Rにコピーできても、PCでしか再生できないなど、がっかりさせられることが多く、まだ運命のソフトに巡り合っていません。最終的には、音楽CD-Rをカーステレオで再生できないと意味がありません。私の希望を満たすフリーソフトをご存じの方教えてください。

Aベストアンサー

DeepBurnerとか

  ”オーディオCD 作成” で検索してお好きなアプリを選択

QVBA Copy/Paste メソッド

エクセル2002使用です。

sheet1のA7からD19セルの値を
sheet2のB列の一列に転記をしたいのですが、
コピーが上手くできません。

Copy、Pasteメソッドを使用するときの
セルの選択が良くわからないのですが、
よろしくお願いします。

Sub tenki()

Dim i As Integer
Dim j As Integer

For i = 7 To 19
For j = 1 To 4

Cells(i, j).Copy
Worksheets("sheet2").Activate
Range("B65536").End(xlUp).Select
ActiveCell.past ←ここでエラー(注)
Next j
Next i

End Sub

(注)
エラー 
オブジェクトは、このプロパティーまたはメソッドをサポートしていません。

Aベストアンサー

おはようございます。

提示のコードを修正するなら
---------------------------------------------
Sub tenki()
Dim i As Integer
Dim j As Integer

For i = 7 To 19
For j = 1 To 4

Cells(i, j).Copy Destination:=Sheets("sheet2").Range("B65536").End(xlUp).Offset(1)

Next j
Next i
End Sub
-------------------------------------------------

尚、Copyの場合は書式(色、罫線等)もコピーされますので、値だけなら、Copyの代わりに

Sheets("Sheet2").Range("B65536").End(xlUp).offset(1).value = Cells(i, j).Value

としてください。
以上です。

QフリーソフトをCD-RやUSBメモリなどに保存して、他のPCにコピーし

フリーソフトをCD-RやUSBメモリなどに保存して、他のPCにコピーしたい(他のPCはインターネットがつながっていない環境なのでダウンロードできない・・・)のですが使用できるようになる方法を教えてください。

※やりたいこと
普段使用しているPCに入っているダウンロードしたフリーソフトを他のPCでも使いたいが、インターネットがつながっていない。

コピーしてペーストではうまくいきませんでした。
そもそもコピーペーストなんかでは使用できないのでしょうか?基本的なことからわかっていないと思いますので、どうぞ宜しくお願い致します。
環境はwinXPです。

Aベストアンサー

インストールタイプのソフトは、ダウンロードした状態のままコピーしていますか?
インストールタイプのソフトは、レジストリやProgram Filesフォルダ以外の所に
ファイルを保存しているソフトがあるので、使うパソコンでインストールしないといけません。
インターネットに繋いでいないとインストール出来ないタイプのソフトがありますが、
この場合は無理です。
インストールタイプでも、Program Filesフォルダ以外にファイルを作ったり、
レジストリを書き換えたりがなければ可能な場合がありますが、
あまり良くないのでできるだけしない方がいいです。

>コピーしてペーストではうまくいきませんでした。
とありますが、何かエラーか何か出たのでしょうか?
詳しいことが分からないので何とも言えませんが、
ソフトがそのパソコンに対応していない場合も考えられます。
ランタイムライブラリが必要な場合もあります。

ファイルを解凍してそのまま使えるタイプであれば、コピーしても基本的に可能です。

Qエクセルのマクロ Range("A1").End(xlDown).rowで列を削除

A列の一番下のデータの次の行から
F列の一番下のデータの行まで削除したいのですが
Rows(" & Range("A1").End(xlDown).row+1 & ":" & Range("F1").End(xlDown).Row & ").Delete Shift:=xlUp
でうまくいきません
どうすればいいのですか?

Aベストアンサー

Rows(Range("A1").End(xlDown).Row + 1 & ":" & Range("F1").End(xlDown).Row).Delete Shift:=xlUp
でどうでしょうか。
Rows()内の最初と最後の("&~&")が不用かと…。

ちなみにxlDownだと途中に空欄があった場合、最下行は取得できません。
xlUpを使ったほうがより確実だと思いますよ。

Aend = Cells(Rows.Count, 1).End(xlUp).Row + 1
Fend = Cells(Rows.Count, 6).End(xlUp).Row
If Aend <= Fend Then Rows(Aend & ":" & Fend).Delete Shift:=xlUp

QPCの文をコピーするとしゃべるフリーソフトを探しています。

PCの文をコピーするとしゃべるフリーソフトを探しています。

以前上記のようなフリーソフトを愛用していたのですが、PCが壊れて新しいのを買いました。
またダウンロードして使いたいのですが、名前を覚えていません。

特徴と言えるほどでもないんですが、水色っぽくて、パックンのような印象がありました。
コピーすると合成音声でしゃべってくれます。

また、探しているソフトでなくても、他のフリーソフトでオススメなものがありましたら教えていただけると嬉しいです。

Aベストアンサー

>水色っぽくて、パックンのような印象
【 SofTalk 】のことでしょうか?
http://www.gigafree.net/media/record/softalk.html
本家
http://cncc.hp.infoseek.co.jp/

QRange("B19:T19").Select

よろしくお願いします

Private Sub Worksheet_Change(ByVal Target As Range)
内のマクロで
Range("B19:T19").Selectの
19をTarget.Rowで表現すると

Range("B19:T19").Selectをどう直したらいいでしょうか?
こんな簡単なことが分かりません

どなたか教えてください

Aベストアンサー

こんばんは!

Range(Cells(Target.Row, "B"), Cells(Target.Row, "T")).Select

とか

Cells(Target.Row, "B").Resize(, 19).Select

といった感じではどうでしょうか?

※ 複数行が変化した場合(データ消去・コピー&ペースト)の場合は
最初の行だけしか選択されません。m(_ _)m

Qデータ、音楽等をコピーできるフリーソフト

CDRなどに、データ、音楽等をコピーできるフリーソフトを探しています。
Easy CDみたいなフリーソフトありませんか?
皆さんのお勧めを教えてください。
ちなみにOSはWindows98です。
よろしくお願いします。

Aベストアンサー

バルクでもない限り、CD-R/RWのドライブに付属されていたはずですが、付属ソフトのどんな点がご不満なんでしょうか?

参考URL:http://www.forest.impress.co.jp/article/2002/12/17/cdmanipulator.html

Q[Excel VBA] selectionとselectはどのように違うのですか?

selectionオブジェクトは、selectされたオブジェクトを表すときに
使用するのですか?

使用するときの違いがわかりません。
よろしくお願いいたします。

Aベストアンサー

こんばんは。Wendy02です。

返事が遅くなってすみません。ちょっと、面倒なことをしていたので……。

>selectionは、セル範囲の取得だけにしか使用できず、他の
>オブジェクトは使えないですね?

いいえ、マウスで選択するもので、ワークシートの中のものなら、ほとんどです。
一つだけできないのは、コントロールツールのオブジェクトですね。

ためしに、

MsgBox TypeName(Selection)

として、マクロを動かしてみてください。

Range やら、ChartArea とか、いろいろ出てくるはずです。つまり、それが取得したオブジェクトですから、その後は、いろいろ加工することが出来ます。ただし、ChartArea などは、ちょっと面倒だから、そのまま、ActiveChart と切り替えたほうが楽です。

QDVDのコピーのフリーソフト

DVDがコピーできるオススメ(使いやすい)のフリーソフトを教えてください。

Aベストアンサー

こちら
http://www.forest.impress.co.jp/lib/sys/hardcust/cddvdburn/cdburnerxp.html

QエクセルでA列を特定のB列の時H列にコピーをするには

初心者です。
エクセルでA列に入れた数字をH列にコピーをしたいのですが、条件としてB列に入れたCDFEE の時だけというのはできるのでしょうか。

A   B    H
23 CDFEE   23
50 TEA
61 ICE
46 RICE  
51 CDFEE   51
こんな感じですが。 

Aベストアンサー

if関数を使うと便利ですよ。
H1のセルに =IF(B1="CDFEE",A1,"") と入力して下さい。この意味は、もしB1のセル内容がCDFEEだったら、A1の値をH1のセルに表示し、そうでなかったら、何も表示しない(""は、なにも表示ナシを意味する)です。この関数式をそのままH1のセルにコピーして貼り付けてもOKです。その後は、そのH1のセルをコピーして、H2~H5の場所に貼り付けてみて下さい。ちゃんと、B列が、CDFEEの所だけ、A列のデータがH列に表示されます


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報