• ベストアンサー

ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。

以下のようなプログラムをVBAで作成したいと考えています。 A1のセルに値があれば、その値をB1に返す。 次にA2のセルに値があれば、その値をB2に返す。 A行に値がある一番下のセルまで同じようなことをさせたいと考えています。 VBAは初心者です。 どなかた宜しくお願い致します。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.5

#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

smorgas030
質問者

お礼

回答ありがとうございました。 Do While Cells(i, 1) <> "" ↑ ここがわかならかったので、質問させていただきました。 やってみたところ、思い通りの動作をすることができました。 ありがとうございました。

その他の回答 (6)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.7

>ここがわかならかったので、質問させていただきました。 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)
回答No.6

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人答えているので、既に同じものはあるかと思ったが無かったので挙げる。

smorgas030
質問者

お礼

回答ありがとうございました。 d = Range("A65536").End(xlUp).Row For i = 1 To d If Cells(i, "A") <> "" Then ↑ このやり方もあるのですね。 やってみたところ、思い通りの動作をすることができました。 ありがとうございました。

  • loop_dog
  • ベストアンサー率32% (14/43)
回答No.4

#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)
回答No.3

'100行分 for i=1 to 100 if range(1,i).value<>"" then range(2,i).value=range(1,i).value end if end if

smorgas030
質問者

補足

回答ありがとうございます。 100行分ですが、A行の表は逐次変化していくので、 最終行まで、という指定で考えています。 説明不足で申し訳ありませんでした。

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.2

> 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 ----------------------------------------------------- こんなコードで(とりあえず)できますが・・・ #解説はしません。内容は「自分で調べて、考えて」見てください。

smorgas030
質問者

補足

回答ありがとうございます。 もちろんいろいろしらべたのですが、そこは載せていませんでした。 もうしわけありません。

  • NORI-KEN
  • ベストアンサー率43% (18/41)
回答No.1

こんにちは。 VBAでなくとも B列に =A1のような式を設定すれば良い と思います。 B1で =A1 と式を設定したら 後はB列で 使うところまで コピーしていけば全体に式が設定できます。

smorgas030
質問者

お礼

回答ありがとうございます。 そうですね。その通りですね。

関連するQ&A