【VBA】文章を1文字ずつバラバラにして配列に入れるマクロ

 はい。今回はタイトルにあるように、文章を1文字ずつバラバラにして配列にぽいっと放り込むマクロ でごさいますよ。たとえば

こばとはエクセルが大好きです

て文章を

[こ][ば][と][は][エ][ク][セ][ル][が][大][好][き][で][す]

というように分解して配列要素とするわけです。え? そんなマクロをいったい何に使うのかって? … 文章作成ソフト作ったり、文字を暗号文に変えたり(近日中に公開予定)、けっこう色々なことに応用できる … かもしれません。

文章を1文字ずつばらして配列に入れるマクロ

 まあとにかく、こんなかんじのプロシージャになります。

‘[VBA] 文字列を1字ずつバラバラにして配列に入れるマクロ

Option Base 1

Sub String_Array()

  Dim i As Integer
  Dim mylen As Integer
  Dim mystr As String
  Dim wd() As String

  ‘文章を用意します
  mystr = “エクセルハイマスターこばとです”

  ‘文章の文字数を数えます
  mylen = Len(mystr)

  ‘配列の要素数を確定します
  ReDim wd(mylen)

  ‘1文字ずつ配列に入れます
  For i = 1 To mylen
    wd(i) = Mid(mystr, i, 1)
    Debug.Print wd(i)
  Next i

End Sub

 String_Array を実行すると、配列に1文字ずつ格納されます。
 Debug.Print のコードを入れてあるので、イミディエイトウィンドウに文字が縦にずらずらと表示されますが、必要なければこの部分のコードは削ってくださいな。このマクロでは動的配列(予め要素数を定めない配列)を使っているので、

mylen = Len(mystr)

というコードで文章の文字数をカウントして、

ReDim wd(mylen)

で配列の要素数を決定しています。あとは Mid 関数を使って文章から 1 つずつ文字を抜き出して配列に放り込んでいくだけです。

 配列をワークシートに入力したい場合は次のコードをご使用ください。

‘[VBA] 1文字ずつセルに入力するマクロ

Sub String_To_Cell()

  Dim i As Integer
  Dim mylen As Integer
  Dim mystr As String
  Dim wd() As String

  mystr = “エクセルハイマスターこばとです”

  mylen = Len(mystr)

  ReDim wd(mylen)

  For i = 1 To mylen
    wd(i) = Mid(mystr, i, 1)
    Cells(1, i) = wd(i)
  Next i

End Sub

 String_To_Cell() を実行すると、「エクセルハイマスターこばとです」が分解されて、1文字ずつセルに入力されます。

コメント

タイトルとURLをコピーしました