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

Cassava Editor サポート掲示板

スレッド一覧に戻る返信

[213] マクロで日付を入力

杉山圭介 [2010/12/01 18:33:10]

お世話になります。
実行時の日付をマクロで自動で入力したいのですが、
2010/12/01 と入力するマクロがわかりません。
あと、隣の列に実行時次の日(2010/12/02)も入力したいです。
初歩的な事なのでしょうが、解りませんでした。
マクロを教えて頂けると助かります、宜しくお願いします。

Re: [213] マクロで日付を入力

あすかぜ [2010/12/01 21:25:22]

書き込みありがとうございます。
現在の日付は GetYear(); GetMonth(); GetDate(); で取得できます。
ただし、Cassava マクロは日付計算の機能を持っていないので、「次の日」の計算は自分で用意する必要があります。
次のようなマクロで、現在のセルに今日の日付を、右のセルの明日の日付を設定できます。

// うるう年の判定
function isLeapYear(y){
 if(y % 4){
  return false;
 }else if(y % 100){
  return true;
 }else if(y % 400){
  return false;
 }else{
  return true;
 }
}

// 月の日数
function maxDate(y, m){
 if(m == 4 || m == 6 || m == 9 || m == 11){
  return 30;
 }else if(m == 2){
  if(isLeapYear(y)){
   return 29;
  }else{
   return 28;
  }
 }
 return 31;
}

year = GetYear();
month = GetMonth();
date = GetDate();

// TODAY
[x,y] = year + "/" + month + "/" + date;

// TOMORROW
date++;
if(date > maxDate(year, month)){
 date = 1;
 month++;
 if(month > 12){
  month = 1;
  year++;
 }
}
[x+1,y] = year + "/" + month + "/" + date;


日付計算は需要がありそうなので、近いうちに「n 日後」や「n 日前」を計算するようなライブラリを作って公開したいと思います。
よろしくお願いします。

Re: [213] マクロで日付を入力

杉山圭介 [2010/12/02 07:58:45]

ご返答及び、マクロを教えて頂きありがとうございます。
返答頂いたマクロを元に、自分なりに考えてはみましたが、
2010/12/1 ではなく 2010/12/01 と入力する方法が解りませんでした。1を01と表示する方法があれば教えていただきたいです。宜しくお願い致します。

Re: [213] マクロで日付を入力

杉山圭介 [2010/12/02 14:32:17]

あすかぜ様お世話になっております、
教えて頂いたマクロを編集させていただいております。
54列目にあるデータを置き換え、データの無い行にのみ、
翌日の日付を入力したいのですが、マクロがわかりません。
(下記に書いてあるマクロでは上書きしてしまいます)
聞いてばかりで大変恐縮ですが、教えて頂けると助かります。

B = Bottom;

x = 54;

for(y=1; y<=B; y++){
str = [x,y];
str = replace(str, "年", "/");
str = replace(str, "月", "/");
str = replace(str, "日", "");
str = replace(str, "お届け指定なし", "");
[x,y] = str;
}

// うるう年の判定
function isLeapYear(y){
 if(y % 4){
  return false;
 }else if(y % 100){
  return true;
 }else if(y % 400){
  return false;
 }else{
  return true;
 }
}

// 月の日数
function maxDate(y, m){
 if(m == 4 || m == 6 || m == 9 || m == 11){
  return 30;
 }else if(m == 2){
  if(isLeapYear(y)){
   return 29;
  }else{
   return 28;
  }
 }
 return 31;
}

year = GetYear();
month = GetMonth();
date = GetDate();

// TODAY
x = 16;

for(y=2; y<=B; y++){
[x,y] = year + "/" + month + "/" + date;
}

// TOMORROW
date++;
if(date > maxDate(year, month)){
 date = 1;
 month++;
 if(month > 12){
  month = 1;
  year++;
 }
}

x = 54;

for(y=2; y<=B; y++){
[x,y] = year + "/" + month + "/" + date;
}

Re: [213] マクロで日付を入力

あすかぜ [2010/12/02 22:02:16]

だいぶ複雑になってきたのでファイルとしてアップしました。
下記のファイルをダウンロードしてください。
http://www.asukaze.net/soft/cassava/macro/asukaze/bbs213_20101202.cms

・format 関数を追加し、10 未満の数値に 0 を付けています。
・データの無い行にのみ明日の日付を入れるため、最後のループ内に「if([x,y] == "")」という条件を加えました。

「年」「月」「日」を「/」に変換している箇所ですが、ここも 10 未満の場合 0 を加える処理が必要でしょうか?

Re: [213] マクロで日付を入力

杉山圭介 [2010/12/03 06:54:55]

お世話になっております。
忙しい中、迅速に対応していただきありがとうございます。
教えて頂いたマクロは大切に使わせていただきます。
「年」「月」「日」を「/」に変換している箇所ですが、ここも 10 未満の場合 0 を加えたいです。
頂いたマクロと一晩睨めっこしてもわかりませんでした。
教えていただけると助かります。何から何まで本当に恐縮です。

Re: [213] マクロで日付を入力

あすかぜ [2010/12/03 08:04:59]

マクロの機能が弱いのでいろいろ難しくなってしまい、すみません。
年月日で分割して数値扱いにした後、format 関数を通すようにしたものです。
http://www.asukaze.net/soft/cassava/macro/asukaze/bbs213_20101203.cms

よろしくお願いします。

Re: [213] マクロで日付を入力

杉山圭介 [2010/12/03 16:33:42]

親切に対応していただき、ありがとうございました。
素晴らしいマクロが完成し、嬉しい限りです。
あすかぜ様に教えて頂いたマクロを使い、私に
できる事で人を幸せにしていきたいと思っております。
また機会があればその時は宜しくお願い致します。

Re: [213] マクロで日付を入力

あすかぜ [2010/12/03 21:27:15]

どういたしまして。

なお、日付処理のライブラリの整備に関しては別スレッドを立てておきました。

[214] 日付処理用のライブラリ
http://www.asukaze.net/soft/cassava/bbs/index.cgi?t=214

Re: [213] マクロで日付を入力

taka [2010/12/19 17:09:14]

お世話になります。
日付の計算について、
セルが「04/10/28 06:30:00」など、単一セルに年月日と時間が一緒に入ったものが、複数あります。
これらの内、選択したセルに対してInputBoxを用いて、例えば「06/10/01 05:00:00」から「10/07/21 14:30:00」までの
経過した日時分を足したいのですが、どうすればよいのでしょうか?
宜しくお願い致します。

Re: [213] マクロで日付を入力

あすかぜ [2010/12/19 23:08:58]

takaさま
書き込みありがとうございます。

長くなってきたので、新しいスレッドを作りました。
http://www.asukaze.net/soft/cassava/bbs/index.cgi?t=215
すみませんが、こちらを確認して下さい。

スレッド一覧に戻る返信