26 件の投稿を表示中 (合計 33 個)
  • 作成者
    投稿
  • #31487
    Applek
    参加者

    サンプルを作成しようと思って作ってはいますが、原因になっている不正文字などをそのままコピペしてひとつ入れたら再現するという単純なことではないようです。
    複数の要因で発生しているようです。
    私が使っている内容でも同じ不正文字があったとしても発生しないことも多いです。
    全部の因果関係はまだわかりません。

    #31499
    Yutaka Emura
    キーマスター

    いつもお世話になっております。江村です。

    私がご質問の意味が理解できていないので、こんなにたくさんコメントを書いていただいても無駄になります。まずは、上にも書いたように、何がどのように問題なのか、できるだけシンプルなサンプルとコードを示していただき、期待する動作と実際の動作の両方を示していただけますでしょうか?

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

    #31505
    Applek
    参加者

    メールの件です。
    そうでしたか。

    いずれにしても
    document.selection.Collapse();//選択範囲のブルー反転を解除させる。
    document.selection.SetActivePoint(eePosLogical, 1, 1); ←これをコメントアウトすれば結果は変わります。

    この二つの動作を兼用させれば今のコードでも完璧に動作しておりますし何の不具合も一度もありません。
    説明されているdocument.selection.SetActivePoint(eePosLogical, 1, 1); このコードをどこかにつけないといけないということ自体が一般人には難しすぎます。

    それと選択の範囲がなかった場合の動作ですが、これは文書によっては範囲がひとつも発生しない場合と多い場合の両方があります。
    何の箇所がどれだけあるかというのは文書次第で念のためにいろいろ書いておくものです。

    処理する文書は毎回違うわけでどちらの場合であっても対応できるように作っています。

    範囲となる箇所がゼロである文書も当然存在するわけですが両方兼用して同じように動かせるという意味ではマクロが止まってもらっては困ります。
    説明されているような、対象箇所がゼロの場合の書き方というのは私は教えてもらいましたから可能ですが他の人が気がつくとは思いません。
    現在の止まらないままで上記のコードを兼用した動作に変えてもらったほうがいいと思います。
    初心者が一番簡単な方法が最善だと思います。
    一般の人間が複雑な書き方をわかるはずがなく、そうしないと余計にこの問題で難易度が上がって一般人には難しい仕様になるためです。
    document.selection.Collapse();これじたいに画面をクリックして解消するという機能にすれば簡単になるのに、なぜ逆に難しく変更されるのでしょうか?
    それと制御文字などを消すだけ結果が変わることは謎です。

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

    #31506
    Yutaka Emura
    キーマスター

    いつもお世話になっております。江村です。

    マクロの 2746 行目の BatchReplace の直後、Find で範囲を選択するところがあります。ここでどの文字列も一致しないため、選択範囲は空になります。2826行目の BatchReplace は、 eeFindReplaceSelOnly が指定されているため、選択範囲の置換になります。ところが、選択範囲が無いため、本来は何も置換できないことになりますが、選択範囲が無いのにもかかわらず置換しようとするため、前にも書いたようにめ、予期しない動作が発生しているわけです。この問題はまもなく公開する次のバージョンで改善します。空の選択範囲に対して置換を実行しようとしたとき、エラーとしてマクロを停止せずに、何もしないで制御を次に移すことにします。

    結論は、選択範囲が document.selection.Collapse();で解除されないのではなく、正しく解除されています。しかし、前にも書いたように、空の選択範囲に対して置換を実行しようとしたため、正しく動作していないわけです。私が少し前に書いた発言 #31473 の通りです。

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

    #31507
    Applek
    参加者

    ありがとうございます。
    改善して頂けるということで御厚意、感謝しております。
    document.selection.SetActivePoint(eePosLogical, 1, 1); これも無しで
    document.selection.Collapse();これだけで動作するようにお願いします。
    よろしくお願いいたします。

    #31508
    Yutaka Emura
    キーマスター

    いつもお世話になっております。江村です。

    そのようになります。

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

    #31511
    Yutaka Emura
    キーマスター

    いつもお世話になっております。江村です。

    先ほど、v23.1.1 を公開しました。お試しください。

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

    #31513
    Applek
    参加者

    ありがとうございます。
    希望通りの動作になっています。
    御厚意、感謝しております。

26 件の投稿を表示中 (合計 33 個)
  • このトピックに返信するにはログインしてください。