質問番号:14148951214

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14148951214

セル内の文字列の改行をVBAでプログラミングしたいと思っています。
エクセルVBAの初心者です。よろしくお願いします。

特定のセル内に以下の文字列が入っていたとします。

  1. aaaaaaaaa+bbbbb+cccccccc+ddddddd+eeeeeee

この文字列を、

  1. aaaaaaaaa
  2. bbbbb
  3. cccccccc
  4. ddddddd
  5. eeeeeee

といった感じで、「+」の前で改行するには、どのようにVBAでプログラミングすればいいか、ご教授お願いします。
なお、「+」の数や、「+」と次の「+」間の文字数(上記の例だと、「a」「b」「c」とかの文字数)は全く決まっていません。

初心者でうまく質問できているか不安ですが、どうかよろしくお願いします。

回答

Option Explicit
Option Base 1
Sub main()

    Dim BeforeString As String      ' 分割前文字列
    Dim AfterString As Variant      ' 分割後文字列配列
    Dim Delimiter As String         ' 区切り文字
    Dim lp As Integer               ' ループカウンタ

    ' 区切り文字設定
    Delimiter = "+"

    ' A1セルの内容を分割前文字列にコピー
    BeforeString = Range("A1").Value

    ' 分割前文字列を区切り文字で分割
    AfterString = Split(BeforeString, Delimiter)

    ' 文字分割ができない場合は処理終了
    If UBound(AfterString) = 0 Then
        Exit Sub
    End If

    ' 分割後文字列配列の内容をB1セルから下にコピー
    For lp = 1 To UBound(AfterString)
        Range("B1").Offset(lp - 1).Value = AfterString(lp)
    Next lp

End Sub

参考サイト

http://officetanaka.net/excel/vba/tips/tips62.htm
Split関数で文字列を区切る・OFFICE TANAKA

http://www.moug.net/tech/exvba/0100023.html
文字列を分割し1次元配列として返す(Split関数)・moug