Replaceメソッドを利用してセル中の空白を削除する方法です。
Replaceメソッドの概要
Replaceメソッドは、Excelではctrf+Fで呼び出して使用できる機能です。関数を使用せずに簡単に空白や指定した文字列を削除できるので便利です。
書式は次の通りです。
《書式》
Range.Replace (What, Replace, LookAt, SearchOrder, MatchCase, MatchByte, SearchFormat, ReplaceFormat)
主要な引数の設定内容のイメージは、下図のとおりです。
Whatには、検索(置換)する文字列を指定します。
Replaceは、置換後の文字列を指定します。
LookAtは、検索の仕方を指定します。
LookAtの設定(括弧内は、値で指定する場合)
・xlWhole(1):検索テキスト全体を検索する。
・xlPart(2) :検索テキストの一部を検索する。
SerchOrderは、検索の方向を指定します。
SerchOrderの設定(括弧内は、値で指定する場合)
・xlByRows(1):行を横方向に検索したのち、次の行に移動する。
・xlByColumns(2):列を下方向に検索したのち、次の列に移動する。
MatchCaseは、大文字と小文字の区別をするかどうかを指定します。
MachCaseの設定
True:大文字と小文字を区別する。
False:大文字と小文字を区別しない。
MatchByteは、2 バイト言語サポートを選択またはインストールした場合にのみ使用可能。
MatchByteの設定
True:2 バイト文字が 2 バイト文字とだけ一致するようにする。
False: 2 バイト文字が同等の 1 バイト文字とも一致するようにする。
SearchFormatは、検索書式を指定します。
ReplaceFormatは、置換書式を指定します。
Replaceメソッドを使用してセルの空白を削除する
Replaceメソッドを使用したサンプルコードです。今回は下記記事の内容であるシート内全体を対象として、文字列中の空白を削除するコードを作成します。
Sub rplc()
Cells.Replace What:=" ", _
Replacement:="", _
LookAt:=2, _
SearchOrder:=1, _
MatchCase:=False, _
matchbyte:=False
End Sub
上記コードでシート内すべてを対象として、セルに記載された空白を全角・半角関係なく削除します。
すべてのシートを対象とする場合は、次のようにします。
Sub rplc2()
'すべてのシートを対象としてセル中の空白(全角・半角)を削除する。
Dim ws As Worksheet
For Each ws In Worksheets
ws.Cells.Replace What:=" ", _
Replacement:="", _
LookAt:=2, _
SearchOrder:=1, _
MatchCase:=False, _
Matchbyte:=False
Next
End Sub
最後は、任意のファイルを開き、そのファイルのすべてのシートを対象としてセル中の空白を削除する場合です。
Sub rplc3()
'指定したファイルのすべてのシートを対象としてセル中の空白(全角・半角)を削除する。
Dim ws As Worksheet
Dim fi As String
Dim fiName As String
Dim Fltr As String: Fltr = "Excelファイル,*.xls*"
Dim titl As String: titl = "Excelファイルを選択"
fi = Application.GetOpenFilename(FileFilter:=Fltr, Title:=titl)
Workbooks.Open Filename:=fi
fiName = ActiveWorkbook.Name
For Each ws In Workbooks(fiName).Worksheets
ws.Cells.Replace What:=" ", _
Replacement:="", _
LookAt:=2, _
SearchOrder:=1, _
MatchCase:=False, _
Matchbyte:=False
Next
Workbooks(fiName).Close savechanges:=True
End Sub
今回はここまでです。
コメント