VBA初心者です。if文がなぜ機能しないのか分かりません。教えて下さい!


内容としては794行目から820行目の間の文字列が変わるところに改行が入れられるものを作りたいのですが、どうにもうまく出来ません。

きっと基本的なことが分かっていないからだと思うのですが、どなたかご教授下さい。
よろしくお願い致します。


Sub 改行挿入()
'
' 改行挿入 Macro
'

'
Dim i As Long
For i = 794 To 820
If Cells(i, 1) = Cells(i + 1, 1) Then
HPageBreaks.Add Before:=Cells(i, 1)
End If
Next i
End Sub

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/04/30 11:07:44

ベストアンサー

id:taknt No.2

回答回数13539ベストアンサー獲得回数1198

Dim i As Long
For i = 794 To 820
If Cells(i, 1) = Cells(i + 1, 1) Then
else
HPageBreaks.Add Before:=Cells(i, 1)
exit for
End If
Next i
End Sub

文字列が変わるところにというのは 現在行と次の行がイコールじゃないときとなります。

また、改ページは 何度も入れるようなものではないのかと思います。


ま、質問からすると 一度だけでいいような感じなので 改ページを入れたら そのループから 抜け出すことを オススメします。

id:enoyoshi

皆様、回答ありがとうございます!
そうですよね。ノットイコールですよね。
うっかりミスをしておりました。

〉改ページは 何度も入れるようなものではないのかと思います。
改ページを何度も入れたかったのですが、
その場合は、どこがどのように変わるのでしょうか?

おんぶにだっこで申し訳ありません!

2012/04/29 17:20:21
id:taknt

何度も入れる場合は exit for で 抜けなければいいのです。
つまり この行を削除すればいいでしょう。

2012/04/29 17:24:19

その他の回答1件)

id:ku__ra__ge No.1

回答回数118ベストアンサー獲得回数40

とりあえず「文字列が変わるところ」の判定がしたいなら、
☓ If Cells(i, 1) = Cells(i + 1, 1) Then
○ If Cells(i, 1) <> Cells(i + 1, 1) Then
こうですね。

id:taknt No.2

回答回数13539ベストアンサー獲得回数1198ここでベストアンサー

Dim i As Long
For i = 794 To 820
If Cells(i, 1) = Cells(i + 1, 1) Then
else
HPageBreaks.Add Before:=Cells(i, 1)
exit for
End If
Next i
End Sub

文字列が変わるところにというのは 現在行と次の行がイコールじゃないときとなります。

また、改ページは 何度も入れるようなものではないのかと思います。


ま、質問からすると 一度だけでいいような感じなので 改ページを入れたら そのループから 抜け出すことを オススメします。

id:enoyoshi

皆様、回答ありがとうございます!
そうですよね。ノットイコールですよね。
うっかりミスをしておりました。

〉改ページは 何度も入れるようなものではないのかと思います。
改ページを何度も入れたかったのですが、
その場合は、どこがどのように変わるのでしょうか?

おんぶにだっこで申し訳ありません!

2012/04/29 17:20:21
id:taknt

何度も入れる場合は exit for で 抜けなければいいのです。
つまり この行を削除すればいいでしょう。

2012/04/29 17:24:19
  • id:enoyoshi
    ku__ra__ge様、taknt様のおかげでやりたかったことが出来ました。

    ありがとうございました!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません