[[20201217100621]] 『VBA 選択範囲の空白を削除』(ぐり) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA 選択範囲の空白を削除』(ぐり)

初心者です。

B2〜C2から最終行までのデータに含まれる空白を削除したいのですが、
選択範囲までは動いてくれているようなのですが、空白が削除されないです。

ご指導、よろしくお願いします。

Sub B2C2から最終行までの空白削除()

    Dim 最終行 As Long, 選択範囲 As Long, 空白削除 As Long
    最終行 = Cells(Rows.Count, 1).End(xlUp).Row
    選択範囲 = Range(Cells(2, 2), Cells(最終行, 3)).Select
    空白削除 = Replace(選択範囲, " ", "")
End Sub

< 使用 Excel:Office365、使用 OS:Windows10 >


 条件を指定してジャンプ
 ↓
 空白セル

 で空白セルを選択し、削除
 する作業をマクロの自動記録
 してみてください。
(通りすがり) 2020/12/17(木) 10:20

 > 空白削除 = Replace(選択範囲, " ", "")

 空白ではなくスペースの削除ですか?
 でしたら私のレスはスルーしてください。
(通りすがり) 2020/12/17(木) 10:21

 置換作業をマクロの自動記録
 してみてください。
(通りすがり) 2020/12/17(木) 10:24

まず、変数の型がフィットしていないかと。
それとセルの値の空白削除であれば、セルを指定しないといけませんね
(tkit) 2020/12/17(木) 10:26

■1
ExcelVBAの世界では基本的にシートやセル(オブジェクトと言います)を明示すれば、いちいちアクティブにしたり選択したりする必要はありません。
また、標準モジュールでシートを省略した場合、ActiveSheetを指定したものとして見なされる決まりです。

■2
Replaceメソッドの引数を括弧を付けて書いてしまうと、返り値が帰ってきてしまいますので何かに代入する必要が生じます。
逆に言えば、括弧を付けなければ返り値が返されることがありません(←適切な表現でないかもしれません)

■3
" "(半角スペース)を指定していますが、Replaceメソッドであれば半角全角を区別しないようにもできますので、必要に応じて設定するとよいとおもいます。

上記を踏まえて修正してみると、こんな感じでしょうか

    Sub 修正案()
        Dim 最終行 As Long

        Stop '←ブレークポイントの代わり

        With ActiveSheet
            最終行 = .Cells(.Rows.Count, 1).End(xlUp).Row
            .Range("B2:C" & 最終行).Replace What:=" ", Replacement:="", MatchByte:=False
        End With
    End Sub

(もこな2) 2020/12/17(木) 11:45


皆さんありがとうございます!

もこな2様、完成品まで・・・超感謝です!

すごく勉強になりました!

ご指導頂いた内容、身につけられるようにひとつずつ実践して理解深めます!
(ぐり) 2020/12/17(木) 13:40


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.