Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » 文字列の前後・セルの先頭と末尾の改行を削除する

文字列の前後・セルの先頭と末尾の改行を削除する

対象:Excel2003, Excel2007, Excel2010

Excelをあまりご存知ない方が作ったExcelファイルを、何らかのシステムの中で利用しようとすると、いろいろな前処理・準備処理が必要となります。

最近、私が弄らせていただいているExcelファイルでは、セル内の文字列の前や後に、複数の改行が入っていることがあります。

[セルの書式設定]ダイアログ-[配置]タブ-[縦位置]欄で「中央揃え」をすれば、文字列がセルの中の上下方向の中央に配置されるということをご存知ない方が、縦方向で中央揃えをしたいと考えた苦肉の策ではないかと推測しています。

[スポンサードリンク]

システムの中でこのExcelファイルを利用しようとする場合、文字列の前や後に、無意味に挿入された改行は削除しておくほうが無難です。

そのためのユーザー定義関数をご紹介しましょう。

▼文字列の前と後ろ・セルの先頭と末尾の改行を削除する
Function TrimLF(文字列 As String) As String

 Dim strTmp As String

 strTmp = 文字列

 Do Until Left(strTmp, 1) <> vbLf
  strTmp = Mid(strTmp, 2)
 Loop

 Do Until Right(strTmp, 1) <> vbLf
  strTmp = Left(strTmp, Len(strTmp) - 1)
 Loop

 TrimLF = strTmp

End Function

2つのループ処理を入れたユーザー定義関数を作ってみました。

1つ目のループ処理
 Do Until Left(strTmp, 1) <> vbLf
  strTmp = Mid(strTmp, 2)
 Loop
で、文字列がはじまる前の改行を削除しています。

変数・strTmpを左から1文字ずつ「Left(strTmp, 1)」チェックして、改行でない限り「Until Left(strTmp, 1) <> vbLf」、変数・strTmpに左から2文字目からの文字列に入れなおす処理「strTmp = Mid(strTmp, 2)」を続けます。

2つ目のループ処理
 Do Until Right(strTmp, 1) <> vbLf
  strTmp = Left(strTmp, Len(strTmp) - 1)
 Loop
で、文字列の後ろに続く改行を削除しています。

変数・strTmpを右から1文字ずつ「Right(strTmp, 1)」チェックして、改行でない限り「Until Right(strTmp, 1) <> vbLf」、変数・strTmpに右端の文字列を除いた文字列を入れなおす処理「strTmp = Left(strTmp, Len(strTmp) - 1)」を続けます。

2つのループ処理を行って、文字列の前後の改行がなくなった変数・strTmpを、ユーザー定義関数の戻り値に「TrimLF = strTmp」しています。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » 文字列の前後・セルの先頭と末尾の改行を削除する

「ユーザー定義関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.