Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » 改行以降を削除する・改行までの文字列にするExcelマクロ-InStr・Left関数

改行以降を削除する・改行までの文字列にするExcelマクロ-InStr・Left関数

対象:Excel2003, Excel2007, Excel2010, Excel2013

「excel vba 改行キーがある前の文字列を取り出す」
「excel vba 改行以降を削除」
「マクロ 改行までの文字列を取得」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折見られます。

Excelでは[Alt]+[Enter]キーを押すことでセルの中で改行することができます。

この、セル内改行以降の文字列を削除して、改行までの文字列にするVBA(Visual Basic for Applications)のコード・マクロを探している方による検索です。

[スポンサードリンク]

ある文字列の中から指定した文字列を検索し、最初に見つかった位置を返すInStr関数を利用してやれば、セル内改行以降を削除するマクロができます。

ここでは、選択されているセルの、改行以降を削除するマクロをご紹介します。


Sub 選択セルの改行以降を削除する()

 Dim txt As String
 Dim pos As Long
 Dim rng As Range
 Dim msg As String

 If TypeName(Selection) <> "Range" Then Exit Sub

 msg = "選択されているセルの改行以降を削除しますか?"
 If MsgBox(msg, vbYesNo) = vbNo Then Exit Sub

 For Each rng In Selection
  txt = rng.Valueの
  ''1つ目の改行位置を取得
  pos = InStr(1, txt, vbLf)
  ''1つ目の改行までの文字列にする
  rng.Value = Left(txt, pos - 1)
 Next rng

End Sub

For Each ~ Next文で、改行以降を削除する処理を行っています。

選択されているセル範囲に対してループを回し、
 For Each rng In Selection

元データを変数に格納し、
  txt = rng.Value

1つ目の改行位置をInStr関数で取得し、
  pos = InStr(1, txt, vbLf)

Left関数を使って1つ目の改行までの文字列にすることで
  rng.Value = Left(txt, pos - 1)

改行以降を削除しています。

メインのFor Each ~ Next文に入る前に、
セル範囲が選択されていない場合はマクロを終了し、
 If TypeName(Selection) <> "Range" Then Exit Sub

メッセージを表示して改行までの文字列にするか確認しています。
 msg = "選択されているセルの改行以降を削除しますか?"
 If MsgBox(msg, vbYesNo) = vbNo Then Exit Sub

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » 改行以降を削除する・改行までの文字列にするExcelマクロ-InStr・Left関数

TrackBack:0

TrackBack URL
[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » 改行以降を削除する・改行までの文字列にするExcelマクロ-InStr・Left関数

「VBA関数」の記事一覧

検索

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

.