Excel VBAで複数行入力されたセルやテキストボックスから1行ずつ取出す

Split関数を使う方法もあるようですが、ここでは1文字ずつ判定しCRLF(ラインフィード)ならば、取り出すようにします。

ここではセルとシートに配置したテキストボックスから1行ずつ取り出し、セルに入力します。




Homeに戻る > Excelでよく使うフレーズへ

複数行入力されたセルから1行ずつ取り出す

セルB2に複数行を入力しています。
[分解]ボタンをクリックすると開始します。
複数行入力されたセル

ボタンのクリックイベント内に下記のコードを入力します。
ボタンのクリックイベント内に入力したVBAコード

Option Explicit

Private Sub CommandButton1_Click()
    Dim ssrc As String
    Dim sline As String
    Dim s As String
    Dim i As Long
    Dim lr As Long
    
    lr = 4
    ssrc = Range("B2")
    For i = 1 To Len(ssrc)
        s = Mid(ssrc, i, 1)
        If s = vbLf Then
            Cells(lr, 2) = sline
            sline = ""
            lr = lr + 1
        ElseIf s <> vbCr Then
            sline = sline & s
        End If
    Next
End Sub

これで、取り出した1行が順に下のセルに表示されます。
取り出した1行が順に下のセルに表示された画面

複数行入力されたシート上のテキストボックスから1行ずつ取り出す

テキストボックスから取り出した結果です。
テキストボックスから取り出したシート画面

下記のコードを入力します。
シート上のテキストボックスから入力文字を取り出すには、「Worksheets("Sheet2").TextBoxes("テキスト ボックス 1").Text」のようにします。
シート上のテキストボックスから入力文字を取り出すVBAコード

Option Explicit

Private Sub CommandButton1_Click()
    Dim ssrc As String
    Dim sline As String
    Dim s As String
    Dim i As Long
    Dim lr As Long
    
    lr = 12
    ssrc = Worksheets("Sheet2").TextBoxes("テキスト ボックス 1").Text
    For i = 1 To Len(ssrc)
        s = Mid(ssrc, i, 1)
        If s = vbLf Then
            Cells(lr, 2) = sline
            sline = ""
            lr = lr + 1
        ElseIf s <> vbCr Then
            sline = sline & s
        End If
    Next
End Sub


Homeに戻る > Excelでよく使うフレーズへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved