黙々とC#

"In a mad world of VBA, only the mad are sane" 『VBAという名の狂った世界で狂っているというのなら私の気は確かだ』

goto

本記事は、Excel C# Script入門講座の1記事です。

goto

無条件に処理を分岐させたい場合には、goto ステートメントを使用することができます。ただし、gotoステートメントを多用するとプログラムが分かりにくくなるので積極的には使わない方が良いでしょう。

例えば以下のように使います。

LABEL: // ジャンプ先を示すラベル
var x = 1;
goto LABEL;

//※このサンプルコードは無限ループします

goto ステートメントの使いドコロの1つとしては、階層の深い入れ子のループから抜ける際に使います。

for(var i = 1; i < 100; i++)
{
    for(var j = 1; j < 100; j++)
    {
          if( i > 50 && i == j )
          {
                goto EXITLOOP;
          }
    }
}

EXITLOOP:

goto case

また、goto は switch ステートメントの特定の switch-case ラベルまたは default ラベルに制御を移動するのに使用することができます。

var n = Excel.ActiveWorkbook.ActiveSheet.Range("A1").Value;
var cost = 0;
switch (n)
{
    case 1:
        cost += 25;
        break;
    case 2:
        cost += 25;
        goto case 1;
    case 3:
        cost += 50;
        goto case 1;
    default:
        break;
}

Excel.ActiveWorkbook.ActiveSheet.Range("A2").Value = cost;