Home » エクセルマクロ・Excel VBAの使い方 » 条件分岐 » VBAのIf文で改行を含むか判定する-InStr関数

VBAのIf文で改行を含むか判定する-InStr関数

対象:Excel2007, Excel2010, Excel2013

「vba 改行コードかどうか文字列を一文字ずつ調べる」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気が付きました。

文字列の中に改行コードが含まれているかどうかを、1文字ずつ順番にチェックするVBA(Visual Basic for Applications)のコードを探している方による検索です。

どのアプリケーションでの話なのかわかりませんが、参考になりそうなExcelマクロを2つご紹介しておきます。

[スポンサードリンク]

If文でInStr関数を使って改行を含むかを判定するサンプルマクロ

まず、文字列の中に改行コードが含まれるかどうかを判定するだけならば、わざわざ1文字ずつチェックする必要はありません。

以下のようなInStr関数を使ったマクロで、アクティブセルに改行が含まれているときのみ「改行が含まれています。」というメッセージが表示されます。

Sub 改行の判定_InStr関数()
 Dim txt As String

 txt = ActiveCell.Value
 If InStr(txt, vbLf) = 0 Then
  MsgBox "改行は存在しません。"
 Else
  MsgBox "改行が含まれています。"
 End If
End Sub

VBAではInStr関数を使うと、文字列が含まれているかを調べることができます。

VBAのIf文で改行を含むかを判定する

InStr関数は、第1引数に指定された文字列から、第2引数に指定された文字列を探して、みつかった場合には、何文字目に存在するかという数値を返します。

そして、文字列が見つからなかった場合には「0」を返してきます。

上記のマクロでは、この見つからなかったときに「0」を返すということを利用して、
 txt = ActiveCell.Value
 If InStr(txt, vbLf) = 0 Then
というIf文にしています。
InStr関数の第1引数にアクティブセルの値を代入した変数・txtを、第2引数にExcelの改行コード(Line Feed・0x0A)を定数・vbLfで指定しています。

VBAのIf文で改行を含むかを判定する

改行コードかどうかを1文字ずつチェックするサンプルマクロ

上記のマクロように、If文とInStr関数で、改行コードを含むかどうかは判定できますが、
「vba 改行コードかどうか文字列を一文字ずつ調べる」
という検索をなさった方に、そのままお応えするなら、以下のようなマクロでしょうか。

Sub 改行を含むか判定する_1文字ずつチェックする()
 Dim i As Long
 Dim txt As String
 Dim c As String  'a single character

 txt = ActiveCell.Value
 For i = 1 To Len(txt)
  c = Mid(txt, i, 1)
  If c = vbLf Then
   MsgBox i & "文字目は改行コードです。"
  Else
   MsgBox i & "文字目は『" & c & "』です。"
  End If
 Next i 
End Sub

上記のマクロを実行すると、アクティブセルの値を1文字ずつチェックして、改行コードだったときに、
「n文字目は改行コードです。」
改行コードでなかったときには、
「n文字目は『●』です。」
というメッセージボックスが表示されます。

アクティブセルに入力されているデータの、文字数だけFor~Nextループを回して、
 txt = ActiveCell.Value
 For i = 1 To Len(txt)

Mid関数を使ってアクティブセルの文字列から1文字ずつ取り出して、
  c = Mid(txt, i, 1)
取り出した1文字が改行コードかどうかを判定しています。
  If c = vbLf Then

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 条件分岐 » VBAのIf文で改行を含むか判定する-InStr関数

「条件分岐」の記事一覧

検索


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

.