FOR-IN文

本ページには広告が含まれています。

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

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

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

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

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

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

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

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

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

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

UWSC
FOR FolderItem IN FolderItems
	PRINT FolderItem.Name
NEXT

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

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

使い方

一次元配列の各要素を出力

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

FOR num IN array
	PRINT num
NEXT
結果
プレーンテキスト
25
354
851
2
4562

配列変数に文字列を指定

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

UWSC
FOR item IN "alphabet"
	PRINT item
NEXT
結果
プレーンテキスト
a
l
p
h
a
b
e
t

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

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

UWSC
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を取得します。
GETOLEITEM関数 (スクリプト関数)
JOIN関数 (スクリプト関数)
引数に指定した配列を結合し文字列を返します。
SETCLEAR関数 (スクリプト関数)
配列のすべての要素を任意の値で埋めます。
SHIFTARRAY関数 (スクリプト関数)
配列を指定した値だけシフトします。プラス値で後方、マイナス値で前方にシフトします。
連想配列
連想配列とは、自動的に割り当てられる数字をキーとして持つかわりに、自由に任意の文字列を割り振ることができる配列のことです。添え字に番号の変わりに名前をつけることでわかりやすく管理することができます。
divisors関数 (自作関数)
引数に指定した数値の約数のリストを返します。
LENGTH関数 (スクリプト関数)
POPUPMENU関数 (スクリプト関数)
ポップアップメニューを表示し、引数に指定した配列の中から選択された項目の要素番号を取得します。選択された項目を取得したい場合は、POPUPMENUの戻値を引数に指定した配列の要素番号として指定します。