migi = migi + 1 の位置をEnd If の後に持ってきたらどうなるか想像してやってみたところ思ったとおりになりました。
もう一つ
For hida = 2 To 500 と317よりも長めにおいてみたところD22のセルに21が入ってしまいました。 なぜD22にだけ入ってしまうのかが理解ません。 自分でマクロを動かしたときにも一番下の行だけほかの行と 違っていたりするのと関係がある気がするのですが・・
Sub rensyu() Dim migi As Long Dim hida As Long migi = 2 For hida = 2 To 500 If Range("B" & hida).Value <> Range("B" & hida - 1).Value Then Range("D" & migi).Value = migi - 1 Range("e" & migi).Value = Range("B" & hida).Value migi = migi + 1 End If Next End Sub
Sub rensyu()
Dim migi As Long
Dim hida As Long
migi = 2
For hida = 2 To 500
If hida = 317 then
Debug.Print hida '[*]
End If
If Range("B" & hida).Value <> Range("B" & hida - 1).Value Then
Range("D" & migi).Value = migi - 1
Range("e" & migi).Value = Range("B" & hida).Value
migi = migi + 1
End If
Next
End Sub
受講生さんの投稿
(投稿ID: 45)
の位置をEnd If の後に持ってきたらどうなるか想像してやってみたところ思ったとおりになりました。
もう一つ
For hida = 2 To 500
と317よりも長めにおいてみたところD22のセルに21が入ってしまいました。
なぜD22にだけ入ってしまうのかが理解ません。
自分でマクロを動かしたときにも一番下の行だけほかの行と
違っていたりするのと関係がある気がするのですが・・
Sub rensyu()
Dim migi As Long
Dim hida As Long
migi = 2
For hida = 2 To 500
If Range("B" & hida).Value <> Range("B" & hida - 1).Value Then
Range("D" & migi).Value = migi - 1
Range("e" & migi).Value = Range("B" & hida).Value
migi = migi + 1
End If
Next
End Sub
岡崎年彦さんのコメント
(コメントID: 719)
Range("B318").Value=”宮崎繊維”
Range("B318").Value ” ”
∴ If Range("B" & hida).Value <> Range("B" & hida - 1).Value が成立するので、
Range("D22" ).Value = 21となったのではと。
なので、Endプロパティで最終行の値を取得する事が肝要になってくるのですね。
(駄文失礼しました・・・・。自身の復習の意味も兼ねてコメントさせて頂きました。)
岡崎年彦さんのコメント
(コメントID: 720)
Range("B317").Value=”宮崎繊維” ←ここを訂正します・・・・。
受講生さんのコメント
(コメントID: 721)
コメントありがとうございます。
If Range("B" & hida).Value <> Range("B" & hida - 1).Value が成立していたのですね。
よくみたらわかりました!
コメントいただいて考えてみたら理解できました。
なぜそうなるのか考えることが大切なのですね。
>hida=318の時、
>Range("B318").Value=”宮崎繊維”
>Range("B318").Value ” ”
>
>∴ If Range("B" & hida).Value <> Range("B" & hida - 1).Value が成立するので、
> Range("D22" ).Value = 21となったのではと。
>
> なので、Endプロパティで最終行の値を取得する事が肝要になってくるのですね。
> (駄文失礼しました・・・・。自身の復習の意味も兼ねてコメントさせて頂きました。)
>
>
小川 慶一さんのコメント
(コメントID: 730)
>migi = migi + 1
>の位置をEnd If の後に持ってきたらどうなるか想像してやってみたところ思ったとおりになりました。
いい感じですね!いろいろテストしてみて!
小川 慶一さんのコメント
(コメントID: 731)
匿名さん、
>If Range("B" & hida).Value <> Range("B" & hida - 1).Value が成立していたのですね。
>よくみたらわかりました!
>なぜそうなるのか考えることが大切なのですね。
そうそう。そうです。よく見て、考えて。
あと、テストもすること。
例えば、以下のようなプログラムを作って、自分で試すの。
[*]のところにブレークポイントを入れてください。
そして、ブレークポイントで止まったところから、[F8]を一回一回押しながら、変数とかセルに入っている値とかを、指さし確認して読み上げながら実行する。
理系科目は実験が基本です。
人が用意してくれた実験をそのままやれるようになるのはもちろんですが、最終的には、
・課題に出くわしたら、
・自分で仮説を立てて、
・仮説を検証するための実験を設計して、
・実験して、
・結果を確認して、
・仮説を検証する、
というすべてをできるようになることが目標です。その状態の人が、「マクロを使いこなせる人」です。
(いつも辛口ですいません。。)