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

Cassava Editor サポート掲示板

スレッド一覧に戻る返信

[344] 複数の文字を置き換えたい

かじやん [2015/11/29 05:29:11]

いつも使わせていただいております。

複数の文字列を置き換えようと思い下記マクロをDLしたのですがうまく置き換えることができません。


いくつかまとめて指定したいのですが、教えていただけると助かります。


例:1列目のテキストAをてきすとBに変換し、5列目の全角スペースを半角スペースへ変換。


str1 = InputBox("テキストA");
if(str1 == "1"){
return;
}
str2 = InputBox("てきすとB");

for(y=SelTop; y<=SelBottom; y++){
for(x=SelLeft; x<=SelRight; x++){
[x,y] = replace([x,y], str1, str2);
}
}

str1 = InputBox(" ");
if(str1 == "5"){
return;
}
str2 = InputBox(" ");

for(y=SelTop; y<=SelBottom; y++){
for(x=SelLeft; x<=SelRight; x++){
[x,y] = replace([x,y], str1, str2);
}
}


お手数をおかけしますが、よろしくお願いいたします。

Re: [344] 複数の文字を置き換えたい

あすかぜ [2015/11/29 23:56:29]

「1列目のテキストAをてきすとBに変換し、5列目の全角スペースを半角スペースへ変換」
であれば、次の 4 行のマクロで実現できます。

for (y = 1; y <= Bottom; y++) {
 [1,y] = replace([1,y], "テキストA", "てきすとB");
 [5,y] = replace([5,y], " ", " ");
}

「for (y = 1; y <= Bottom; y++) {}」は CSV ファイルのすべての行を対象とすることを表します。
選択範囲のみを対象とする場合は「for (y = SelTop; y <= SelBottom; y++) {}」を使ってください。
列に関しては 1 列目と 5 列目だけを処理するので、選択範囲をすべて処理するための「for(x=...) {}」は不要です。
InputBox は "テキストA" や "てきすとB" などをマクロ実行時にダイアログボックスで入力するために使います。
ダイアログボックスを使いたい場合は次のようになります。

str1 = InputBox("1 列目の置換前の文字列を入力してください。");
str2 = InputBox("1 列目の置換後の文字列を入力してください。");
str3 = InputBox("5 列目の置換前の文字列を入力してください。");
str4 = InputBox("5 列目の置換後の文字列を入力してください。");

for (y = 1; y <= Bottom; y++) {
 [1,y] = replace([1,y], str1, str2);
 [5,y] = replace([5,y], str3, str4);
}


期待通りに動作するでしょうか?
よろしくお願いします。

Re: [344] 複数の文字を置き換えたい

かじやん [2015/11/30 16:27:52]

早速のご返答ありがとうございます。

試したところ、一瞬で全て置き換えることができました。

分かりやすく説明していただき感謝です♪

ずっと悩んでいたのが解決され、とても助かりました!

凄く使いやすいので、これからもバリバリ使わせていただきます^^

スレッド一覧に戻る返信