Home » エクセルマクロ・Excel VBAの使い方 » 配列 » セル内の文字列を1文字ずつ配列変数に代入するExcelマクロ

セル内の文字列を1文字ずつ配列変数に代入するExcelマクロ

対象:Excel2007, Excel2010, Excel2013

「エクセル マクロ 文字列を 1文字ずつ配列に」
「excel vba 文字を配列に入れる 1文字づつ」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが、時々あることに気づきました。

Excel VBA(Visual Basic for Applications)で、何らかの文字列を一文字ずつ配列変数に代入・格納するにはどうすればいいのかを探している方による検索です。

[スポンサードリンク]

アクティブセルの文字列を一文字ずつ配列に格納するサンプルマクロ

「配列にセルの文字を一文字ずつ割り当てる」
といった検索でのアクセスもありますので、ここではアクティブセルの値を一文字ずつ配列に代入するサンプルマクロをご紹介しておきます。

Sub 一文字ずつ配列に格納()

 Dim arr() As String
 Dim str As String
 Dim i As Long

 str = ActiveCell.Value
 ReDim arr(1 To Len(str))
 For i = 1 To UBound(arr)
  arr(i) = Mid(str, i, 1)
 Next i

 Stop

End Sub

上記のマクロを実行すると、End Subの直前のStop文で、ステップ実行モードになります。

この状態でローカルウィンドウを表示すれば、下図のように、アクティブセル内の文字列が一文字ずつ配列に格納されていることを確認できます。

セル内の文字列を1文字ずつ配列変数に代入するExcelマクロ

サンプルマクロの解説

アクティブセルの値を変数・strに代入して、
 str = ActiveCell.Value

配列のサイズを決めます。
 ReDim arr(1 To Len(str))
Excelマクロの場合、配列の添字の最小値は「1」のほうが扱いやすいことが多いので、ここでは添字の最小値を「1」、アクティブセルの値の文字数(Len(str))を添字の最大値としています。

1から、添字の最大値までループを回して、
 For i = 1 To UBound(arr)

Mid関数を使って、1文字ずつ配列変数・arr()に代入しています。
  arr(i) = Mid(str, i, 1)

添字を0からにした場合のサンプルマクロ

Excelマクロの場合は、上記のように配列変数の添字の最小値を「1」にするほうが扱いやすいことが多いと思いますが、添字を「0」からにする場合は、以下のようなマクロです。

Sub 一文字ずつ配列に格納_0から()

 Dim arr() As String
 Dim str As String
 Dim i As Long

 str = ActiveCell.Value
 ReDim arr(0 To Len(str) - 1)
 For i = 0 To UBound(arr)
  arr(i) = Mid(str, i + 1, 1)
 Next i

 Stop

End Sub

セル内の文字列を1文字ずつ配列変数に代入するExcelマクロ

なお、配列変数のサイズを決めるReDim文ですが、添字を「0」からにした場合は、
 ReDim arr(Len(str) - 1)
のように、最小値側を書かない方が多いと思いますが、ここでは先にご紹介した「1」からにした場合、
 ReDim arr(1 To Len(str))
との比較のために、
 ReDim arr(0 To Len(str) - 1)
というコードでご紹介しています。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 配列 » セル内の文字列を1文字ずつ配列変数に代入するExcelマクロ

「配列」の記事一覧

検索


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

.