[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA 指定文字があった場合にそのセルをクリアしたい(指定文字は複数セルに存在)』(ピノ)
いつもお世話になっております。
VBA初心者です。
VBAにて『指定文字があった場合にそのセルをクリアする』という操作を、
そのシートにある指定文字すべてに行いたいです。
下記の通り、ネットを参考にFindとIfを使用し、記載しましたが、
最初に見つかった文字のみしかクリア処理されませんでした。
複数セルに処理させる構文にするには、どう書き換えたらよいでしょうか。
ご存知の方いらっしゃいましたら、よろしくお願いいたします。
Sub
'文字列:(空白)があった場合にクリア
Set rngFind = Range("A1:F100").Find(What:="(空白)", _ LookIn:=xlValues, _ LookAt:=xlPart, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, _ MatchCase:=False, _ MatchByte:=False) If Not rngFind Is Nothing Then rngFind.Clear
End If
End sub
< 使用 Excel:Excel2016、使用 OS:Windows10 >
参考に Sub Test() '文字列:(空白)があった場合にクリア Dim rngFind As Range Dim fAddress As String
Set rngFind = Range("A1:F100").Find(What:="(空白)", _ LookIn:=xlValues, _ LookAt:=xlPart, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, _ MatchCase:=False, _ MatchByte:=False)
If rngFind Is Nothing Then MsgBox "(空白)は、見つかりませんでした。", 64 Exit Sub End If fAddress = rngFind.Address Do rngFind.Clear Set rngFind = Range("A1:F100").FindNext(rngFind) If rngFind Is Nothing Then Exit Sub Loop While fAddress <> rngFind.Address End Sub
(ピンク) 2020/05/07(木) 11:28
Findメソッドは、最初に見つかった【1つ】のセルしか返しません。
複数のセルを探すにはもう一工夫必要です。
http://officetanaka.net/excel/vba/tips/tips123.htm
(もこな2 ) 2020/05/07(木) 11:31
>もこな2様
Findメソッドでは1つしか検索できないんですね。
勉強になりました!
1点教えて頂きたいのですが、
ピンク様にいただいた構文でDoLoopの後に作業を簡単な処理を入れたいと思い、
入れてみたところ、その処理は実行されませんでした。(下記構文)
DoLoopの後、Endsubまでの間に記載した構文は、処理されないのでしょうか。
(特にエラーは発生しませんでした。)
別のプロシージャで実行すれば問題ないのですが、今後の為に教えて頂ければ幸いです。
Range("A1").Select
シート名変更 Sheets("Sheet1").Name = "商品サマリ"
(ピノ) 2020/05/07(木) 13:09
>ピンク様にいただいた構文でDoLoopの後に作業を簡単な処理を入れたいと思い、 >入れてみたところ、その処理は実行されませんでした。(下記構文)
If rngFind Is Nothing Then Exit Sub ↓ If rngFind Is Nothing Then Exit Do
(ピンク) 2020/05/07(木) 13:29
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.