FOR-IN-NEXT

配列やコレクションなどのグループの各要素に対して繰り返し処理を行います。

配列変数には配列の他に COMのコレクション、GETDIRGETITEMGETALLWINのスクリプト関数での利用が可能です。これら3つの関数は、配列変数に指定した場合は取得した要素を配列で返し、それ以外では取得した要素の数を返す特別な関数です。

配列変数に文字列・数値が指定された場合には1文字ずつ要素分解します。

同じ繰り返し処理を行うFOR-TO-NEXTがありますが、配列を扱うときはFOR-IN-NEXT、それ以外はFOR-TO-NEXTというような使い分けで良いと思います。

構文
FOR 変数 IN 配列変数
処理
NEXT
引数
戻り値

COMオブジェクトのコレクション

コレクション名はオブジェクト名の複数形で表されます。例えば、ExcelのWorkbookオブジェクトとWorkbooksコレクション、ShellのFolderItemオブジェクトとFolderItemsコレクションなどです。また、コレクションは必ずItemプロパティとCountプロパティを持っています。

コレクションをFOR-IN-NEXTで回すには以下のように記述します。

FOR オブジェクト IN コレクション
	// 何らかの処理
NEXT

FOR-IN-NEXTで記述すると、「FolderItems.Item(i)」の記述をせずとも「FolderItem」オブジェクトを取得することができます。

FOR FolderItem IN FolderItems
	PRINT FolderItem.Name
NEXT

FOR-TO-NEXTに書き換えると以下のようになります。

FOR i = 0 TO FolderItems.Count – 1
	DIM FolderItem = FolderItems.Item(i)
	PRINT FolderItem.Name
NEXT

配列の中身を出力

DIM array[] = 25, 354, 851, 2, 4562

FOR num IN array
	PRINT num
NEXT
結果
25
354
851
2
4562

配列変数に文字列を指定

配列変数に文字列を指定した場合、1文字ずつ出力されます。数値を指定した場合も同じです。

FOR item IN “alphabet”
	PRINT item
NEXT
結果
a
l
p
h
a
b
e
t

デスクトップにあるファイルの一覧を出力

GETDIR関数は取得した要素の数を返すので配列ではありませんが、For In構文においては取得した各要素を返す特別な関数です。

CONST ssfDesktop = 0

DIM Shell = CREATEOLEOBJ(“Shell.Application”)
DIM Folder = Shell.NameSpace(ssfDesktop)

FOR Item IN GETDIR(Folder.Self.Path)
	PRINT Item
NEXT

関連記事

CALCARRAY (スクリプト関数)
配列の合計値・最小値・最大値・平均値を求めます。
GETALLWIN (スクリプト関数)
全ウィンドウのIDを取得します。
JOIN (スクリプト関数)
引数に指定した配列を結合し文字列を返します。
POPUPMENU (スクリプト関数)
ポップアップメニューを表示し、引数に指定した配列の中から選択された項目の要素番号を取得します。選択された項目を取得したい場合は、POPUPMENUの戻値を引数に指定した配列の要素番号として指定します。
SLICE (スクリプト関数)
SLICE関数は、配列の中を指定範囲の配列で返す関数です。第一引数に配列を指定し、第二引数に開始位置、第三引数に終了位置を指定します。第二・第三引数は省略可能で、省略した場合は配列全体を返します。戻値はsafearray型です。
UBound
配列の最大インデックスを返します。
連想配列
連想配列とは、自動的に割り当てられる数字をキーとして持つかわりに、自由に任意の文字列を割り振ることができる配列のことです。添え字に番号の変わりに名前をつけることでわかりやすく管理することができます。
inArray
divisors
引数に指定した数値の約数をリストを配列で返します。
bubbleSort
引数に指定した配列をバブルソートで並び替えます。
gnomeSort
ノームソートはソートアルゴリズムの一つです。挿入ソートに似ているが、要素の移動は挿入ではなくバブルソートのような一連の交換で行います。
heapSort
引数に指定された配列をヒープソートで並び替えます。
oddEvenSort
奇偶転置ソートは、ソートのアルゴリズムの一つで、バブルソートを改良したもの。バブルソートではスキャンを一方向に順次行うのに対し、奇偶転置ソートでは組ごとに行います。
shearSort
シェアソートはソートアルゴリズムの一つで、データを長方形に並べた上で各行・各列ごとにソートを行ないます。
arraySearch
配列の中から指定した要素が見つかった場合、その要素がある最初のインデックスを返します。
arrayReverse
引数に指定した配列を逆順にして返します。
QSORT (スクリプト関数)
QSORT関数は、配列の中身をソートする関数です。戻値はありません。昇順・降順・UNICODE文字比較 昇順・UNICODE文字比較 降順・自然順ソート 昇順・自然順ソート 降順のいずれかを指定することができます。
RESIZE (スクリプト関数)
配列のサイズを変更します。第二引数を省略した場合はサイズを取得します。
SETCLEAR (スクリプト関数)
配列のすべての要素を任意の値で埋めます。
SHIFTARRAY (スクリプト関数)
配列を指定した値だけシフトします。プラス値で後方、マイナス値で前方にシフトします。
SPLIT (スクリプト関数)
SPLIT関数は、引数に指定された文字列を区切文字列で区切り配列に格納します。区切文字列を省略した場合、スペースが区切文字列となります。戻値は配列でsafearray型です。
shakerSort
シェーカーソートは、ソートのアルゴリズムの一つです。バブルソートを改良したもの。双方向バブルソート、改良交換法とも言われます。バブルソートではスキャンを一方向にしか行わないのに対し、シェーカーソートでは交互に二方向に行います。
combSort
コムソートではソートの初期段階では離れた要素を比較交換します。そして徐々に2つの要素間の距離を縮めて、最後に直接隣接している要素どうしの比較交換を行います。
selectionSort
選択ソートは、ソートのアルゴリズムの一つ。配列された要素から、最大値やまたは最小値を探索し配列最後の要素と入れ替えを行うことでソートします。
insertionSort
挿入ソートは、ソートのアルゴリズムの一つ。整列してある配列に追加要素を適切な場所に挿入します。
shellSort
シェルソートは挿入ソートが改良された整列アルゴリズムです。リストにおいてあらかじめ離れている要素を交換しておき、最終的に挿入ソートを実行します。
mergeSort
マージソートは整列されていないリストを2つのリストに分割して、それぞれを整列させた後、それらをマージして整列済みのひとつのリストを作ります。
quickSort
問題を小さな部分問題に分割していく分割統治法を利用した手法で、データから適当に基準値を決めこれより大きいグループと小さいグループに分けるという手順を、分けた小さなグループに対しても再帰的に繰り返していきます。
bogoSort
要素をランダムに並べ替えることで偶発的な一致を試みる整列アルゴリズムです。
WHILE-WEND
ループ処理を行います。ループの始めに条件判定を行いループ内で条件を変えないと無限ループになります。条件が合わなければ処理は1度も実行されません。最低1度は処理を実行したい場合はREPEAT-UNTIL文を使います。前判定。
FOR-TO-NEXT
条件が真の間、処理を繰り返し実行します。途中でループを抜けたいときはBREAK文を使います。
REPEAT-UNTIL
REPEAT文では、条件式がTRUEになるまで処理を行います。WHILE文と同様処理を繰り返す回数がわからないときREPEAT文を使います。ループ内で条件式の変数の値を変えないと無限ループとなるので注意が必要です。 REPEAT文は後判定でループ内の処理を実行してから条件式の確認を行うので、最低一度は処理が実行されます。