- ベストアンサー
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
以下のようなプログラムをVBAで作成したいと考えています。 A1のセルに値があれば、その値をB1に返す。 次にA2のセルに値があれば、その値をB2に返す。 A行に値がある一番下のセルまで同じようなことをさせたいと考えています。 VBAは初心者です。 どなかた宜しくお願い致します。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
#2さんと似たものですが・・・・参考にしてください。 Sub test001() Dim i As Long i = 1 Do While Cells(i, 1) <> "" Cells(i, 2) = Cells(i, 1) i = i + 1 Loop End Sub
その他の回答 (6)
- hana-hana3
- ベストアンサー率31% (4940/15541)
>ここがわかならかったので、質問させていただきました。 Do Loop 文と呼ばれる繰返し処理のための構文です。 Do 処理 Loop の用に使いますが、このままでは無限に処理が実行されてしまい、無限ループに陥る事になります。 そのため、ループさせるための条件を付加する事で条件が満たされる間だけループ処理を行う事ができます。 Do While Cells(i, 1) <> "" は、Cells(i, 1)が空白以外なら処理を行う と言う条件です。 http://www2s.biglobe.ne.jp/~iryo/vba/VBA07.html
- imogasi
- ベストアンサー率27% (4737/17069)
Sub test01() d = Range("A65536").End(xlUp).Row For i = 1 To d If Cells(i, "A") <> "" Then Cells(i, "B") = Cells(i, "A") End If Next i End Sub 既回答とやっていることは同じでも、少し違うのですね。 上記は5人答えているので、既に同じものはあるかと思ったが無かったので挙げる。
お礼
回答ありがとうございました。 d = Range("A65536").End(xlUp).Row For i = 1 To d If Cells(i, "A") <> "" Then ↑ このやり方もあるのですね。 やってみたところ、思い通りの動作をすることができました。 ありがとうございました。
- loop_dog
- ベストアンサー率32% (14/43)
#3です。 (コピペ間違えた) '100行分 For i = 1 To 100 If ActiveSheet.Cells(i, 1).Value <> "" Then ActiveSheet.Cells(i, 2).Value = ActiveSheet.Cells(i, 1).Value End If Next
- loop_dog
- ベストアンサー率32% (14/43)
'100行分 for i=1 to 100 if range(1,i).value<>"" then range(2,i).value=range(1,i).value end if end if
補足
回答ありがとうございます。 100行分ですが、A行の表は逐次変化していくので、 最終行まで、という指定で考えています。 説明不足で申し訳ありませんでした。
- dsuekichi
- ベストアンサー率64% (171/265)
> VBAは初心者です。 初心者なのはしょうがないとしても、 「初心者なりに」自分で考えたり、調べたりしてますよね? それを提示してください。 ちなみに、 ----------------------------------------------------- Sub copyAtoB() Dim R As Range Set R = ThisWorkbook.ActiveSheet.Cells(1, 1) Do While R.Value <> "" R.Offset(0, 1) = R.Value Set R = R.Offset(1, 0) Loop End Sub ----------------------------------------------------- こんなコードで(とりあえず)できますが・・・ #解説はしません。内容は「自分で調べて、考えて」見てください。
補足
回答ありがとうございます。 もちろんいろいろしらべたのですが、そこは載せていませんでした。 もうしわけありません。
- NORI-KEN
- ベストアンサー率43% (18/41)
こんにちは。 VBAでなくとも B列に =A1のような式を設定すれば良い と思います。 B1で =A1 と式を設定したら 後はB列で 使うところまで コピーしていけば全体に式が設定できます。
お礼
回答ありがとうございます。 そうですね。その通りですね。
お礼
回答ありがとうございました。 Do While Cells(i, 1) <> "" ↑ ここがわかならかったので、質問させていただきました。 やってみたところ、思い通りの動作をすることができました。 ありがとうございました。