システムメンテナンスのお知らせ

以下のようなプログラムをVBAで作成したいと考えています。

A1のセルに値があれば、その値をB1に返す。
次にA2のセルに値があれば、その値をB2に返す。
A行に値がある一番下のセルまで同じようなことをさせたいと考えています。

VBAは初心者です。
どなかた宜しくお願い致します。

gooドクター

A 回答 (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
    • good
    • 20
この回答へのお礼

回答ありがとうございました。

Do While Cells(i, 1) <> ""

ここがわかならかったので、質問させていただきました。
やってみたところ、思い通りの動作をすることができました。
ありがとうございました。

お礼日時:2007/08/10 14:34

>ここがわかならかったので、質問させていただきました。



Do Loop 文と呼ばれる繰返し処理のための構文です。

Do
処理
Loop
の用に使いますが、このままでは無限に処理が実行されてしまい、無限ループに陥る事になります。
そのため、ループさせるための条件を付加する事で条件が満たされる間だけループ処理を行う事ができます。

Do While Cells(i, 1) <> ""
は、Cells(i, 1)が空白以外なら処理を行う と言う条件です。

http://www2s.biglobe.ne.jp/~iryo/vba/VBA07.html
    • good
    • 5

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

回答ありがとうございました。

d = Range("A65536").End(xlUp).Row
For i = 1 To d
If Cells(i, "A") <> "" Then



このやり方もあるのですね。
やってみたところ、思い通りの動作をすることができました。
ありがとうございました。

お礼日時:2007/08/10 14:56

#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
    • good
    • 0

'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行の表は逐次変化していくので、
最終行まで、という指定で考えています。
説明不足で申し訳ありませんでした。

補足日時:2007/08/10 14:30
    • good
    • 0

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

この回答への補足

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

補足日時:2007/08/10 14:28
    • good
    • 1

こんにちは。


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

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

お礼日時:2007/08/10 14:28

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

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

gooドクター

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

人気Q&Aランキング