トップ回答者
A列に空白があれば空白行を別シートへコピーの繰り返し処置方法

質問
回答
-
【なかなかうまくいかない】について、(手間ではありますが)具体的に書いていただけると嬉しかったです。
こちらで動かしてみた結果、1.最初の1行目はコピーしてくれますが、コピー先の行位置が1つ下の行になってしまうこと、
2.2行目以降は、コピー処理自体が怪しそうです。
ソースコードを拝見させていただきました。
A.
Sheets("貼付け元").Select
の命令で、貼り付け元シートを選択することで、【For ループ文にある Cells の対象シート】にされています。
その後で、ループ処理に入っていて、If 条件分岐で空白セルだったら、該当行をコピーした後、
Sheets("貼り付け先").Select
の命令で、貼り付け先シートに変更することで、【For ループ文にある Cells の対象シート】を変えられています。
このまま(貼り付け元シートの再選択をしないまま)、次のループに進んでいることが、怪しいように見えます。
行のコピペが終わったら、貼り付け元シートに切り替えないと、【For ループ文にある Cells の対象シート】が【貼り付け先シート】をターゲットにしているのでは??と思いました。
B.
ループ文で使われている i 変数は、貼り付け元シートの行位置インデックスとしては、うまく機能していますが、
【貼り付け先シート】側では、【貼り付け先の行位置が違うため】、i 変数を同じく利用するのは、良い感じではないかもしれません。
貼り付け先の行位置を覚えさせておくための、もう一つの変数を用意しておき、貼り付ける時は、こちらの変数を利用して貼り付けると良い感じになるかもしれません。
ただ、貼り付けた後でこの変数も更新しないと、同じ行位置に上書きコピーされてしまいます ...
A と B を何とか頑張って直すことで、sssmz 様の実現されたいことが可能になるのではと思います。
- 回答としてマーク 立花楓Microsoft employee, Moderator 2018年3月29日 1:59
すべての返信
-
【なかなかうまくいかない】について、(手間ではありますが)具体的に書いていただけると嬉しかったです。
こちらで動かしてみた結果、1.最初の1行目はコピーしてくれますが、コピー先の行位置が1つ下の行になってしまうこと、
2.2行目以降は、コピー処理自体が怪しそうです。
ソースコードを拝見させていただきました。
A.
Sheets("貼付け元").Select
の命令で、貼り付け元シートを選択することで、【For ループ文にある Cells の対象シート】にされています。
その後で、ループ処理に入っていて、If 条件分岐で空白セルだったら、該当行をコピーした後、
Sheets("貼り付け先").Select
の命令で、貼り付け先シートに変更することで、【For ループ文にある Cells の対象シート】を変えられています。
このまま(貼り付け元シートの再選択をしないまま)、次のループに進んでいることが、怪しいように見えます。
行のコピペが終わったら、貼り付け元シートに切り替えないと、【For ループ文にある Cells の対象シート】が【貼り付け先シート】をターゲットにしているのでは??と思いました。
B.
ループ文で使われている i 変数は、貼り付け元シートの行位置インデックスとしては、うまく機能していますが、
【貼り付け先シート】側では、【貼り付け先の行位置が違うため】、i 変数を同じく利用するのは、良い感じではないかもしれません。
貼り付け先の行位置を覚えさせておくための、もう一つの変数を用意しておき、貼り付ける時は、こちらの変数を利用して貼り付けると良い感じになるかもしれません。
ただ、貼り付けた後でこの変数も更新しないと、同じ行位置に上書きコピーされてしまいます ...
A と B を何とか頑張って直すことで、sssmz 様の実現されたいことが可能になるのではと思います。
- 回答としてマーク 立花楓Microsoft employee, Moderator 2018年3月29日 1:59