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関数 (スクリプト関数)
配列の中身を区切り文字で結合し、文字列として返します。
QSORT関数 (スクリプト関数)
配列の中身をソートします。
SETCLEAR関数 (スクリプト関数)
配列を指定された値で埋めます。
SHIFTARRAY関数 (スクリプト関数)
配列データをシフトします。
連想配列
連想配列とは、自動的に割り当てられる数字をキーとして持つかわりに、自由に任意の文字列を割り振ることができる配列のことです。添え字に番号の変わりに名前をつけることでわかりやすく管理することができます。
LENGTH関数 (スクリプト関数)
文字数もしくは配列サイズを返します。
POPUPMENU関数 (スクリプト関数)
ポップアップメニューを表示します。