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

Cassava Editor サポート掲示板

スレッド一覧に戻る返信

[208] マクロを教えてください

川口幸一 [2010/11/13 10:58:20]

「あすかぜ」様、

この度、CSVの大容量データを取り扱う事になり、色々と調べた結果、
Cassavaが非常に有効である事が判り、是非とも使用したく思います。

ところが、読んでくるCSVデータは多少加工が必要です。この加工をマクロで行いたく思います。
マクロの説明を読みましたが、今ひとつ理解していません。
そこで、マクロを教えてください。
たとえば、下記の様なVBAをマクロに書き換えると、どの様になるのでしょうか。
ご指南お程、お願いします。

Sub data_load()
Dim DD As Single, Val As Single
Dim xl As Integer, yl As Integer
'
Val = InputBox(" Please keyin, How much increase")
'
xl = Cells(2, 1)
yl = Cells(2, 2)
'
xl = (xl - 1) + 2
yl = (yl - 1) + 6

For YY = 6 To yl
For XX = 2 To xl

DD = Cells(YY, XX)
Cells(YY, XX) = DD + Val
Cells(YY, XX).Font.Color = RGB(255, 0, 0)
Next
Next
'
End Sub

Re: [208] マクロを教えてください

あすかぜ [2010/11/13 11:28:37]

書き込みありがとうございます。
この例のマクロであれば、次のようになります。

Val = double(InputBox(" Please keyin, How much increase"));

xl = [1, 2];
yl = [2, 2];

xl = (xl - 1) + 2;
yl = (yl - 1) + 6;

for(YY = 6; YY <= yl; YY++){
 for(XX = 2; XX <= xl; XX++){
  DD = [XX, YY];
  [XX, YY] = DD + Val;
 }
}

・特定のセルの色を変えることはできません。
・セル指定は (行,列) ではなく [列,行] の形に逆転しています。
・変数宣言はできません。そのままだと文字列連結(「1」+「1」=「11」)になってしまうため、InputBox の結果を double() に通して数値扱いさせます。
・各文の後ろに「;」をつけます。コメントは「//」です。for ブロックは C 言語風の構文を採用しています。

わからないポイントなどあれば質問してください。
よろしくお願いします。

Re: [208] マクロを教えてください

川口幸一 [2010/11/13 21:42:38]

あすかぜ様

お世話になります。
ありがとうございました。今回教えていただきましたマクロを参考に、マクロリファレンスを活用してマクロを作成します。
今後ともよろしくお願いします。

Re: [208] マクロを教えてください

川口幸一 [2010/11/18 14:03:58]

お世話になっています。またマクロを教えてください。
例えば、処理した結果値DDが48.157958102565とする時、
4桁目で四捨五入したいのです。Cassavaマクロを見ていたら、Math.cmsを見つけました。この中に、Round関数がありました。
function round(value, digits){
s = pow(10, digits);
return round(value * s) / s;
}
この関数を自分のマクロ内で使う時、どの様に書けば良いのでしょうか。教えてください。

Re: [208] マクロを教えてください

あすかぜ [2010/11/18 19:07:39]

ダウンロードした Math.cms は、マクロフォルダ(「共有マクロフォルダ」もしくは「ユーザーマクロフォルダ」)に置いてください。
他のファイルの関数は「ファイル名.関数名()」で呼び出せます(ファイル名からは「.cms」をを除く)。
round 関数の場合、「Math.round」です。

DD = 48.157958102565;
[1,1] = DD; // 48.157958102565
[1,2] = Math.round(DD); // 48
[1,3] = Math.round(DD, 4); // 48.1580

digits は小数点以下の桁数です。
この例では最後の桁が 0 になるので、実際には「48.158」と出力されます。

Re: [208] マクロを教えてください

川口幸一 [2010/11/22 21:26:11]

あすかぜ様
連絡が遅くなり申し訳ありません。
理解しました。ありがとうございました。

スレッド一覧に戻る返信