プロが教える店舗&オフィスのセキュリティ対策術

数値が転記されなくて困っています。

お分かりかと思いますが簡単に説明させていただきます。
以下のマクロは任意のCELLが空欄であるならば、その空欄に他のCELLからのデータを持ってくる。
というものですが。

r = 36
Do Until s2.Cells(r, 5) = ""
r = r + 1
Loop
s2.Cells(r, 5) = s1.Cells(1, 39)
s2.Cells(r, 10) = s1.Cells(3, 39)

の部分はデータの転記が成功するのですが。

それ以外の部分は空欄になってしまいます。

同シート同士の選択がいけないのか?
s2.Cells(r, 3) = s2.Cells(34, 48)
s2.Cells(r, 8) = s2.Cells(35, 48)

s2シートの設定がどこかおかしいのか?
表現の仕方がおかしいのか・・・
できる限りの原因を探りましたが分かりませんでした。
どなたかマクロの詳しい方、知識をお貸しください><


Sub xxx()

s1_name = "NO1"
s2_name = "NO2"

Set s1 = Sheets(s1_name)
Set s2 = Sheets(s2_name)

r = 36
Do Until s2.Cells(r, 5) = ""
r = r + 1
Loop
s2.Cells(r, 5) = s1.Cells(1, 39)
s2.Cells(r, 10) = s1.Cells(3, 39)


r = 36
Do Until s2.Cells(r, 3) = ""
r = r + 1
Loop
s2.Cells(r, 3) = s2.Cells(34, 48)
s2.Cells(r, 8) = s2.Cells(35, 48)


r = 36
Do Until s2.Cells(r, 4) = ""
r = r + 1
Loop
s2.Cells(r, 4) = s2.Cells(25, 48)
s2.Cells(r, 9) = s2.Cells(26, 48)


r = 36
Do Until s2.Cells(r, 6) = ""
r = r + 1
Loop
s2.Cells(r, 6) = s2.Cells(30, 48)
s2.Cells(r, 11) = s2.Cells(31, 48)

End Sub

A 回答 (2件)

>お分かりかと思いますが


判りにくいよ。
ーー
コードだけ挙げて、やりたいことも回答者が解読し、答えも教えろ、ですか。
したいことぐらい文章で記述すべきだ。文章に客観かすることで、思考も深まる。
>Do Until s2.Cells(r, 5) = ""
くり返しの、終了条件が空白セルに「最初の遭遇」になっているが、其れで良いのか?
空白でないセルは処理しないにしても、範囲の最下セルまでは空白かどうか、判別して空白であれば
他セルから値を取ってくるのではないですか。
VBAを始めて日が浅いのかな。
直ぐこういうところに質問しないで、デバッグの方法も勉強し、デバッグする習慣をつけないと
何時までも力がつかない。
ーー
個人的なお奨め
s2.Cells(r, 3)ーー>s2.Cells(r,"C") 可読性が良い
Do Untilーー>できればFor Nextループで
本件もこのやり方なら上記の件を考え違いはなくなるだろう。
r=36やr=r+1の行が不要になる。
第3,4,5,6の列を対象にするため、似たコードを連ねているが、1本化できないか、勉強のため今後考えて見ては。
    • good
    • 1
この回答へのお礼

なんかお恥ずかしくなってしまいました。
こういう質問の仕方はよくないのですね^^;色々反省します。。
分かる限りのご指導ありがとうございました!

お礼日時:2011/02/08 08:41

s2.Cells(34, 48)に何が入っているのか分からないので何とも言えないのですが、


デバックのしかたを覚えたらどうですか。

ブレークポイントを設定するとか、ウォッチ式を追加するとか・・・
    • good
    • 0
この回答へのお礼

ありがとうございます!参考になりました!

お礼日時:2011/02/08 08:38

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

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