見出し画像

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 は停止ボタンが設置されていて安心できますね。
次は、セル範囲の値を取得するような配列処理を試してみようかな。

この記事が気に入ったらサポートをしてみませんか?