配列やコレクションなどのグループの各要素に対して繰り返し処理を行います。
配列変数には配列の他に 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文で回すには以下のように記述します。
FOR オブジェクト IN コレクション
// 何らかの処理
NEXT
FOR-IN文で記述すると、FolderItems.Item(i)の記述をせずともFolderItemオブジェクトを取得することができます。
FOR FolderItem IN FolderItems
PRINT FolderItem.Name
NEXT
FOR-TO文に書き換えると以下のようになります。
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を取得します。
- GETOLEITEM関数 (スクリプト関数)
- JOIN関数 (スクリプト関数)
- 引数に指定した配列を結合し文字列を返します。
- SETCLEAR関数 (スクリプト関数)
- 配列のすべての要素を任意の値で埋めます。
- SHIFTARRAY関数 (スクリプト関数)
- 配列を指定した値だけシフトします。プラス値で後方、マイナス値で前方にシフトします。
- 連想配列
- 連想配列とは、自動的に割り当てられる数字をキーとして持つかわりに、自由に任意の文字列を割り振ることができる配列のことです。添え字に番号の変わりに名前をつけることでわかりやすく管理することができます。
- divisors関数 (自作関数)
- 引数に指定した数値の約数のリストを返します。
- LENGTH関数 (スクリプト関数)
- POPUPMENU関数 (スクリプト関数)
- ポップアップメニューを表示し、引数に指定した配列の中から選択された項目の要素番号を取得します。選択された項目を取得したい場合は、POPUPMENUの戻値を引数に指定した配列の要素番号として指定します。