「excel vba 改行キーがある前の文字列を取り出す」
「excel vba 改行以降を削除」
「マクロ 改行までの文字列を取得」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折見られます。
Excelでは[Alt]+[Enter]キーを押すことでセルの中で改行することができます。
この、セル内改行以降の文字列を削除して、改行までの文字列にするVBA(Visual Basic for Applications)のコード・マクロを探している方による検索です。
ある文字列の中から指定した文字列を検索し、最初に見つかった位置を返すInStr関数を利用してやれば、セル内改行以降を削除するマクロができます。
ここでは、選択されているセルの、改行以降を削除するマクロをご紹介します。
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
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関数