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

Cassava Editor サポート掲示板

スレッド一覧に戻る返信

[723] 26列にある一桁の日付を二桁に27列にある一桁の月を二桁にするマクロを書いたのですが短くできませんか。

渡辺 潤 [2023/01/06 12:23:13]

26列にある一桁の日付を二桁に27列にある一桁の月を二桁にするマクロを書いたのですが短くできませんか。
別にこれでも問題はなさそうなのですが勉強のためよろしくお願いいたします。

for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "1") {
    [26,y] = "01";
  }
}

for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "2") {
    [26,y] = "02";
  }
}
for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "3") {
    [26,y] = "03";
  }
}
for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "4") {
    [26,y] = "04";
  }
}
for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "5") {
    [26,y] = "05";
  }
}
for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "6") {
    [26,y] = "06";
  }
}
for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "7") {
    [26,y] = "07";
  }
}
for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "8") {
    [26,y] = "08";
  }
}
for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "9") {
    [26,y] = "09";
  }
}
for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "1") {
    [27,y] = "01";
  }
}

for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "2") {
    [27,y] = "02";
  }
}
for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "3") {
    [27,y] = "03";
  }
}
for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "4") {
    [27,y] = "04";
  }
}
for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "5") {
    [27,y] = "05";
  }
}
for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "6") {
    [27,y] = "06";
  }
}
for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "7") {
    [27,y] = "07";
  }
}
for (y = 1; y <= Bottom; y++) {
  if ([26,y] == "8") {
    [27,y] = "08";
  }
}
for (y = 1; y <= Bottom; y++) {
  if ([27,y] == "9") {
    [27,y] = "09";
  }
}

Re: [723] 26列にある一桁の日付を二桁に27列にある一桁の月を二桁にするマクロを書いたのですが短くできませんか。

あすかぜ [2023/01/06 19:14:09]

「セル内容が 1 文字であれば "0" をつけたす」と考えれば、次のように書けそうです。

for (y = 1; y <= Bottom; y++) {
  if (len([26,y]) == 1) {
    [26,y] = "0" + [26,y];
  }

  if (len([27,y]) == 1) {
    [27,y] = "0" + [27,y];
  }
}

また、正規表現では数字 1 文字を「\d」のように記述できるので、ReplaceAll 命令を使って次のように書くこともできます。

ReplaceAll("(\\d)", "0$1", false, true, true, 26, 1, 27, Bottom);

いかがでしょうか。

Re: [723] 26列にある一桁の日付を二桁に27列にある一桁の月を二桁にするマクロを書いたのですが短くできませんか。

渡辺 潤 [2023/01/07 11:54:11]

ありがとうございます。
どちらもうまく機能しました。

lenというのはこう使うのですね。
正規表現というのはまだよくわからないのですが、
いずれ勉強したいと思います。

またよろしくお願いいたします。

スレッド一覧に戻る返信