Excel VBAしか知らない私が、Excel Scriptを独学(3)
Office スクリプト ドキュメントによると、VBA マクロがデスクトップ ソリューション用に開発されたことに対し、Office スクリプトはクロスプラットフォームへのサポートをガイドラインに設計されているようです。
Power Automate と接続し自動化できるなど、夢が広がりますね。
繰り返し処理(for)
for ( 初期値 ; 実行条件 ; 増減式 ) { 繰り返す処理 }
function main(workbook: ExcelScript.Workbook)
{
let WS = workbook.getActiveWorksheet();
for (let i=0 ; i<12 ; i++) {
WS.getCell(i,0).setValue(i+1+"月");
}
}
セル A1 から A12 に 「1月」から「12月」を記入する
初期値( i=0 )が実行条件( i<12 )の間、{ }の処理を繰り返す処理です。
増減式( i++ )は、i=i+1と同じ意味で、処理 1回ごとに変数 i が 1 増えます。
VBAの For~Next の文法は、初期値( For i=0 )と完了値(To 11)で記述しますが、Excel Script は実行条件( i<12 「i が12以下の間」)の記述になるところが違いですね。
function main(workbook: ExcelScript.Workbook)
{
let WS = workbook.getActiveWorksheet();
let i=0
for ( ; i<12 ; ) {
WS.getCell(i,0).setValue(++i+"月");
}
}
初期値、増減式は省略できるから、このように書くこともできるけど、VBAのようにカウントしてくれないから、気を付けないと無限ループになるよ。
インクリメント演算子(++)
デクリメント演算子(--)
「Y = i++」 Y = i 処理後に i = i+1
「Y = ++i」 Y = i+1 処理後に i = i+1
「Y = i--」 Y = i 処理後に i = i-1
「Y = --i」 Y = i-1 処理後に i = i-1
演算子の増減がどのタイミングで発生するかがポイントだね。
次回は...
VBAのDo~Loopとか、増減式を書き忘れて無限ループにハマるとESC押しても止まらなくて困ることがあったけど、Excel Script は停止ボタンが設置されていて安心できますね。
次は、セル範囲の値を取得するような配列処理を試してみようかな。