Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5055 / 13644 ツリー ←次へ | 前へ→

【52838】範囲設定が異常(デバッグでは正常表示?) 07/12/5(水) 19:48 質問[未読]
【52839】Re:範囲設定が異常(デバッグでは正常表示... n 07/12/5(水) 20:03 発言[未読]
【52841】Re:範囲設定が異常(デバッグでは正常表示... 07/12/5(水) 20:53 お礼[未読]

【52838】範囲設定が異常(デバッグでは正常表示?...
質問    - 07/12/5(水) 19:48 -

引用なし
パスワード
   去年、数行に書かれた文章を連結して、1行にする方法をハチさんに教えて頂きました。
【42239】 途中HNを変更しました(他に同じHNがいたため)

それに、ちょっと手を加えて下記コードで作業していた(問題なし)のですが
今回、Do〜Loopで一括処理しようとしたら、繰り返す毎に全部の文章が繋がってしまいました。
(デバッグ処理での画面確認では、範囲設定に問題はないように思えます)
解決方法をご教授願います。

【やろうとしていること】 下記、処理前の文書を処理後に書き換える
Do〜Loopを設定する前は(下記コードの☆がない場合)問題ありませんでした。
[処理前]
  A  B
1    1.マレー半島は
2    イギリスの植民地であった。

4    2.第二次大戦中は
5    日本の軍政下に置かれた。

7    3.戦後はイギリス連邦内の
8    自治領として独立した

[処理後]
  A  B
1    1.マレー半島はイギリスの植民地であった。

3    2.第二次大戦中は日本の軍政下に置かれた。

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.マレー半島はイギリスの植民地であった。

3    1.マレー半島は・・・・・2.第二次大戦中は日本の軍政下に置かれた。

5    1.マレー半島は・・・2.第二次世界中は・・・・3.戦後は・・・・

【デバッグでの確認】
Do〜Loopでの範囲設定を確認しました。
ActiveCell.CurrentRegion.Select の所で
1回目は1〜2行目
2回目は4〜5行目
3回目は7〜8行目の文章(B列)が範囲指定されていました。
それにも係らず、Value表示は上記の通り、それ以前の文章が全て繋がってしまいます。

宜しくお願いします。

【52839】Re:範囲設定が異常(デバッグでは正常表...
発言  n  - 07/12/5(水) 20:03 -

引用なし
パスワード
   こんにちは。
変数Strの中味を確認してみましょう。

If i2 = 1 Then GoTo line:
'■ここ、あるいは
For Each r In Selection.Cells
  Str = Str & r.Value
Next r

ActiveCell.Value = Str
'■ここのどちらかで Str を初期化していないからです。

【52841】Re:範囲設定が異常(デバッグでは正常表...
お礼    - 07/12/5(水) 20:53 -

引用なし
パスワード
   ▼n さん:
早速、ありがとうございました。

>'■ここのどちらかで Str を初期化していないからです。

言われてみるとその通りでした。直りました。

前回もnさんに助けて頂きました。
重ねて御礼申し上げます。

5055 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free