今回のお題ですが、最初は勝手にFor Each構文を使わなければ!と思い込んでしまい、作成してみました。 基礎編でもFor Next構文で作った!と思い出し、なぜかmigiはFor Next構文・・・。 C列を指定するのも上手いこと思いつかず、Offsetで表現してみましたが、 For Each構文を使った場合にC列を指定する上手な(スマートな)表現方法ってあるものなのでしょうか?
Sub mondai5()
Dim rg As Range
Dim migi As Long
For migi = 4 To 15
For Each rg In Range("A4:A29")
If rg.Value = Range("E" & migi).Value Then
rg.Offset(0, 2).Value = Range("F" & migi).Value
Exit For
End If
Next
Next
End Sub
まだまだテキストを見ながら、調べながらでないと書けませんが、 日々精進していきたいと思います。
2015/12/03 20:50
小川 慶一さんのコメント
(コメントID: 3132)
古口梨絵 さん:
For Each構文だけを使って書くなら以下ですね。
Sub ForEachOnly()
Dim rH As Range
Dim rM As Range
For Each rH In Range("A4:A29")
For Each rM In Range("E4:E15")
If rH.Value = rM.Value Then
rH.Offset(, 2).Value = rM.Offset(, 1).Value '[*]
Exit For
End If
Next
Next
End Sub
早速の返答、ありがとうございました! なるほど!と思い、For Each構文だけでもう一度書いてみました。 For Next構文の「hida」「migi」のイメージで書いたので、 結果、先生から提示していただいたマクロと For Each rH と For Each rM とが逆転してしまいました。 (それ以外は同じように書けました)
最終的には総当たり戦で探っていくのでどちらでも問題なさそうな気はしますが、 小人ちゃん的にはFor Each rHのほうが先がいい!とかあるのでしょうか?
2015/12/04 00:17
小川 慶一さんのコメント
(コメントID: 3134)
古口梨絵 さん:
>For Each rH と For Each rM とが逆転してしまいました。 >(それ以外は同じように書けました) >小人ちゃん的にはFor Each rHのほうが先がいい!とかあるのでしょうか?
古口梨絵さんの投稿
(投稿ID: 1821)
ようやく本編を見終わり、フォローアップに突入しました。
今回のお題ですが、最初は勝手にFor Each構文を使わなければ!と思い込んでしまい、作成してみました。
基礎編でもFor Next構文で作った!と思い出し、なぜかmigiはFor Next構文・・・。
C列を指定するのも上手いこと思いつかず、Offsetで表現してみましたが、
For Each構文を使った場合にC列を指定する上手な(スマートな)表現方法ってあるものなのでしょうか?
まだまだテキストを見ながら、調べながらでないと書けませんが、
日々精進していきたいと思います。
小川 慶一さんのコメント
(コメントID: 3132)
For Each構文だけを使って書くなら以下ですね。
たとえば、最初に [*] に来たときには、 rH は セルA15, rM は セルE4 のことを指しています。
ですから、 rH.Offset(, 2) は セルC15, rM.Offset(, 1) は セル F4 のことを指すことになります。
..て、これで説明十分かな?どうでしょう。
古口梨絵さんのコメント
(コメントID: 3133)
早速の返答、ありがとうございました!
なるほど!と思い、For Each構文だけでもう一度書いてみました。
For Next構文の「hida」「migi」のイメージで書いたので、
結果、先生から提示していただいたマクロと
For Each rH と For Each rM とが逆転してしまいました。
(それ以外は同じように書けました)
最終的には総当たり戦で探っていくのでどちらでも問題なさそうな気はしますが、
小人ちゃん的にはFor Each rHのほうが先がいい!とかあるのでしょうか?
小川 慶一さんのコメント
(コメントID: 3134)
>For Each rH と For Each rM とが逆転してしまいました。
>(それ以外は同じように書けました)
>小人ちゃん的にはFor Each rHのほうが先がいい!とかあるのでしょうか?
どっちでもよいですよ。
参考までに書くと、 For Next 構文よりも For Each 構文のほうが、
PCにかかる負荷が低く、処理は高速です。
そのことについては、もしご興味あれば、まずは以下を参照ください。
http://www.exvba.com/comment_detail.php?comment_id=2570
古口梨絵さんのコメント
(コメントID: 3135)
ブログ見てきました!
作る人、使う人、見る人、色んな視点がありますものね。
仕事をやる上でも、エクセルとは関係なしに同じことが言えますね。
納得しました。ありがとうございました。
小川 慶一さんのコメント
(コメントID: 3136)
ですね。
ひきつづきよろしくお願いいたします。