|
去年、数行に書かれた文章を連結して、1行にする方法をハチさんに教えて頂きました。
【42239】 途中HNを変更しました(他に同じHNがいたため)
それに、ちょっと手を加えて下記コードで作業していた(問題なし)のですが
今回、Do〜Loopで一括処理しようとしたら、繰り返す毎に全部の文章が繋がってしまいました。
(デバッグ処理での画面確認では、範囲設定に問題はないように思えます)
解決方法をご教授願います。
【やろうとしていること】 下記、処理前の文書を処理後に書き換える
Do〜Loopを設定する前は(下記コードの☆がない場合)問題ありませんでした。
[処理前]
A B
1 1.マレー半島は
2 イギリスの植民地であった。
3
4 2.第二次大戦中は
5 日本の軍政下に置かれた。
6
7 3.戦後はイギリス連邦内の
8 自治領として独立した
[処理後]
A B
1 1.マレー半島はイギリスの植民地であった。
2
3 2.第二次大戦中は日本の軍政下に置かれた。
4
5 3.戦後はイギリス連邦内の自治領として独立した。
Sub 短文連結()
Dim r As Range, Str As String
Dim i As Integer, i2 As Integer
Do '☆ 後から設定
ActiveCell.CurrentRegion.Select
i = Selection.Row
i2 = Selection.Rows.Count
If i2 = 1 Then GoTo line:
For Each r In Selection.Cells
Str = Str & r.Value
Next r
ActiveCell.Value = Str
Rows("" & CStr(i + i2 - 1) & ":" & CStr(i + 1) & "").EntireRow.Delete
line:
Cells(i + 1, 2).End(xlDown).Select
Loop Until ActiveCell.Row = 65536 '☆ 後から設定
End Sub
【Do〜Loop後の結果】
1 1.マレー半島はイギリスの植民地であった。
2
3 1.マレー半島は・・・・・2.第二次大戦中は日本の軍政下に置かれた。
4
5 1.マレー半島は・・・2.第二次世界中は・・・・3.戦後は・・・・
【デバッグでの確認】
Do〜Loopでの範囲設定を確認しました。
ActiveCell.CurrentRegion.Select の所で
1回目は1〜2行目
2回目は4〜5行目
3回目は7〜8行目の文章(B列)が範囲指定されていました。
それにも係らず、Value表示は上記の通り、それ以前の文章が全て繋がってしまいます。
宜しくお願いします。
|
|