none
A列に空白があれば空白行を別シートへコピーの繰り返し処置方法 RRS feed

  • 質問

  • A列に空白がある場合の繰り返し処理について

    ・貼付け元にA列が空白の行があった場合、空白行をコピーし、貼り付け先のA2から追加していく処理を実行したのですが、

     なかなかうまくいかないので、ご教示いただければ思い、質問させていただきました。

    【シート】

    【貼付け元シート】

    【貼付け先シート】


    【コード】


    • 編集済み sssmz 2018年3月18日 10:04
    2018年3月18日 3:46

回答

  • 【なかなかうまくいかない】について、(手間ではありますが)具体的に書いていただけると嬉しかったです。

    こちらで動かしてみた結果、1.最初の1行目はコピーしてくれますが、コピー先の行位置が1つ下の行になってしまうこと、
    2.2行目以降は、コピー処理自体が怪しそうです。

    ソースコードを拝見させていただきました。

    A.
    Sheets("貼付け元").Select
    の命令で、貼り付け元シートを選択することで、【For ループ文にある Cells の対象シート】にされています。

    その後で、ループ処理に入っていて、If 条件分岐で空白セルだったら、該当行をコピーした後、
    Sheets("貼り付け先").Select
    の命令で、貼り付け先シートに変更することで、【For ループ文にある Cells の対象シート】を変えられています。

    このまま(貼り付け元シートの再選択をしないまま)、次のループに進んでいることが、怪しいように見えます。
    行のコピペが終わったら、貼り付け元シートに切り替えないと、【For ループ文にある Cells の対象シート】が【貼り付け先シート】をターゲットにしているのでは??と思いました。

    B.
    ループ文で使われている i 変数は、貼り付け元シートの行位置インデックスとしては、うまく機能していますが、
    【貼り付け先シート】側では、【貼り付け先の行位置が違うため】、i 変数を同じく利用するのは、良い感じではないかもしれません。
    貼り付け先の行位置を覚えさせておくための、もう一つの変数を用意しておき、貼り付ける時は、こちらの変数を利用して貼り付けると良い感じになるかもしれません。
    ただ、貼り付けた後でこの変数も更新しないと、同じ行位置に上書きコピーされてしまいます ...

    A と B を何とか頑張って直すことで、sssmz 様の実現されたいことが可能になるのではと思います。

    2018年3月18日 7:58

すべての返信

  • 【なかなかうまくいかない】について、(手間ではありますが)具体的に書いていただけると嬉しかったです。

    こちらで動かしてみた結果、1.最初の1行目はコピーしてくれますが、コピー先の行位置が1つ下の行になってしまうこと、
    2.2行目以降は、コピー処理自体が怪しそうです。

    ソースコードを拝見させていただきました。

    A.
    Sheets("貼付け元").Select
    の命令で、貼り付け元シートを選択することで、【For ループ文にある Cells の対象シート】にされています。

    その後で、ループ処理に入っていて、If 条件分岐で空白セルだったら、該当行をコピーした後、
    Sheets("貼り付け先").Select
    の命令で、貼り付け先シートに変更することで、【For ループ文にある Cells の対象シート】を変えられています。

    このまま(貼り付け元シートの再選択をしないまま)、次のループに進んでいることが、怪しいように見えます。
    行のコピペが終わったら、貼り付け元シートに切り替えないと、【For ループ文にある Cells の対象シート】が【貼り付け先シート】をターゲットにしているのでは??と思いました。

    B.
    ループ文で使われている i 変数は、貼り付け元シートの行位置インデックスとしては、うまく機能していますが、
    【貼り付け先シート】側では、【貼り付け先の行位置が違うため】、i 変数を同じく利用するのは、良い感じではないかもしれません。
    貼り付け先の行位置を覚えさせておくための、もう一つの変数を用意しておき、貼り付ける時は、こちらの変数を利用して貼り付けると良い感じになるかもしれません。
    ただ、貼り付けた後でこの変数も更新しないと、同じ行位置に上書きコピーされてしまいます ...

    A と B を何とか頑張って直すことで、sssmz 様の実現されたいことが可能になるのではと思います。

    2018年3月18日 7:58
  • 1回目の処理が終わった後に貼付け元に戻っていませんでした。

    ご丁寧な回答ありがとうございます。

    2018年3月18日 10:02