[あすかぜ・ねっと]あすかぜ・ねっと自作ソフトCassava > サポート掲示板

Cassava Editor サポート掲示板

スレッド一覧に戻る
題名:
名前:
この名前を次回も使用する


スレッド一覧に戻る返信

[911] 小数点の端数処理

デヒ [2025/08/01 09:07:24]

現在アクティブなシートのみを対象に処理します。
U列が「1U6」または「1U7」の行に対して、T列の値を整数に切り捨て、S列にR列との差分を記録します。
処理完了後にメッセージボックスを表示します。
以下のようなマクロをくんだのですが、エラーがでます。
大変申し訳けありませんが、修正いただければ幸甚です。
よろしくおねがいいたします。

lastRow = Bottom;

for(y = 1; y <= lastRow; y++){
    uVal = ["U", y];

    // 文字列比較は == でOK
    if(uVal == "1U6" || uVal == "1U7"){
        tValStr = ["T", y];

        // 小数点を含むかどうかを文字列で判定
        if(IndexOf(tValStr, ".") >= 0 && IsNumeric(tValStr)){
            tVal = ToDouble(tValStr);
            tInt = Int(tVal); // 小数点以下切り捨て

            ["T", y] = tInt;

            rValStr = ["R", y];
            if(IsNumeric(rValStr)){
                rVal = ToDouble(rValStr);
                ["S", y] = rVal - tInt;
            }
        }
    }
}

MessageBox("アクティブシートの処理が完了しました!");

Re: [911] 小数点の端数処理

あすかぜ [2025/08/01 21:57:37]

Cassava Editor では列は列番号で表すので、「S列」「T列」「U列」ではなく「19 列目」「20 列目」「21 列目」のようになります。
整数への切り捨ては小文字の int() でできます。
次のようなマクロでどうでしょうか。


for (y = 1; y <= Bottom; y++) {
  uVal = [21,y];
  if (uVal == "1U6" || uVal == "1U7") {
    tInt = int([20,y]);
    [20,y] = tInt;
    [19,y] = [18,y] - tInt;
  }
}

MessageBox("アクティブシートの処理が完了しました!");


試してみてください。

Re: [911] 小数点の端数処理

デヒ [2025/08/04 08:25:31]

あすかぜ様
小数点の端数処理できました!!
早々のご回答、本当にありがとうございました。
本日より使用します。
今後とも応援してます!!

スレッド一覧に戻る返信