- 題名・名前・本文は必ず入力してください。
- 題名は、できれば具体的な本文内容がイメージできるものにしてください。
- スパムよけのため、本文中に句読点記号が含まれていない場合にはエラーとなります。 「,」「.」ではなく「、」「。」を使ってください。
- [バグ][要望][質問][済][未] の分類は管理人が後から勝手に付加しています。 書き込み時は意識する必要はありません。
[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