はい。今回はタイトルにあるように、文章を1文字ずつバラバラにして配列にぽいっと放り込むマクロ でごさいますよ。たとえば
こばとはエクセルが大好きです
て文章を
[こ][ば][と][は][エ][ク][セ][ル][が][大][好][き][で][す]
というように分解して配列要素とするわけです。え? そんなマクロをいったい何に使うのかって? … 文章作成ソフト作ったり、文字を暗号文に変えたり(近日中に公開予定)、けっこう色々なことに応用できる … かもしれません。
文章を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 つずつ文字を抜き出して配列に放り込んでいくだけです。
配列をワークシートに入力したい場合は次のコードをご使用ください。
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文字ずつセルに入力されます。
コメント