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

Cassava Editor サポート掲示板

スレッド一覧に戻る
題名:
名前:
e-mail:
URL:
この情報を次回も使用する


スレッド一覧に戻る返信

[351] 表計算後の3桁カンマについて

せんと [2016/03/29 10:50:39]

こんにちは。
既出のAddCommaマクロを参考に表計算後、3桁カンマを打つマクロを組みましたが、
実行するとカンマが付いたり付かなかったりと挙動が不安定で困っております。
単体で実行すると、カンマは付きませんが、
別のマクロを実行してからだと、正常に動作するので、
直前の動作が影響しているように感じます。

回避方法、別のマクロの組み方などありましたらご教授ください。
よろしくお願いいたします。



// 消費税の算出

CalcExpression();
tax = "=[4,y]/[6,y]";
InsertCol(8);
for(y=3; y<=Bottom; y++) {
[8,y] = [8,y] + tax;
AdjustRowHeight(y);
}

// セルのデータに 3 桁ごとに「,」を挿入します。
// (「1234567890」→「1,234,567,890」)

function addComma(str) {
n = len(str) - 3;
if(n <= 0){
return str;
}else{
return addComma(left(str, n)) + "," + mid(str, n + 1);
}
}

for(y=3; y<=Bottom; y++) {
// すでに , があれば削除する
str = replace([x,y], ",", "");

// 先頭の「-」には「,」をつけない
if(mid(str,1,1) == "-"){
minus = "-";
str = mid(str,2);
}else{
minus = "";
}
[x,y] = minus + addComma(str);
}


Re: [351] 表計算後の3桁カンマについて

あすかぜ [2016/03/29 20:36:31]

表示の時に「,」をつけるだけであれば、 [オプション(O)]-[オプション(O)...] でオプションダイアログを開き、左側のツリーで「表示」を選択して「数値を 3 桁区切り表示」にチェックを入れれば、自動的にすべてのセルに「,」が表示されるようになります。


いただいたマクロでは最初に「CalcExpression();」を実行していますが、この命令は実行のたびに「セル内計算式を処理」のオン・オフを切り替えます。
何度も実行するマクロからは CalcExpression(); は削除したほうがよいと思います。
(「セ ル内計算式を処理」を常にオンにするには、「CalcExpression();」を「!startup.cms」という名前のマクロに記述してください。)

また、「x」という変数は現在のカーソル列で初期化されるので、カーソル列ではなく 8 列目を更新するには、「x」ではなく「8」と記述してください。

次のようなマクロであれば、4 列目 を 6 列目で割った値を 3 桁区切り表示できると思います。

// 消費税の算出

InsertCol(8);
for(y=3; y<=Bottom; y++) {
 [8,y] = [4,y] / [6,y];
}

function addComma(str) {
 n = len(str) - 3;
 if (n <= 0) {
  return str;
 } else {
  return addComma(left(str, n)) + "," + mid(str, n + 1);
 }
}

for (y=3; y<=Bottom; y++) {
 // すでに , があれば削除する
 str = replace([8,y], ",", "");

 // 先頭の「-」には「,」をつけない
 if (mid(str,1,1) == "-") {
  minus = "-";
  str = mid(str,2);
 } else {
  minus = "";
 }

 [8,y] = minus + addComma(str);
}

よろしくお願いします。

Re: [351] 表計算後の3桁カンマについて

あすかぜ [2016/03/30 21:06:16]

小数点の位置を考慮して少し書き換えたものも用意してみました。
http://www.asukaze.net/soft/cassava/macro/asukaze/bbs351_20160330.cms

スレッド一覧に戻る返信