2017-05-10 16 views
0

これを重複する質問としてフラグを立てる前に、この非常に簡単な必要性を満たす答えが見つからないことを確認してください。 私は正確に何をしたいのかを説明するのに役立つ写真が含まれています。 下にスクロールして画像を渡してください。 Just for the exampleVBA Excelで指定された範囲の空白行を削除

データがきちんと設定されているとします。 行1〜9は変更しないでください。 行22などは変更しないでください。

21行目から10行目(意図した通り)は、行が空白であるかどうかを確認するコードです。 行が空白の場合は、行を削除します。完全に削除されました。 それ以外の場合は、手を触れないでください。

したがって、写真の1〜9行目はそのままです。 21行目から10行目までは、10回と11回だけです。 22行目などはそのままです。

最初のセルがヌルであるかどうかを調べると、そのトリックが実行されます。正しい構文が正しいように、例の場合はA21からA10の間でのみ必要です。

おそらくばかばかしいかもしれませんが、なんらかの理由でVBAメソッドの初心者であるため、私はそれを正しく実行するのに苦労しています。

私は何とか 私はあなたがまだVBAで何ができるかでまだただあまり良くないです関与EntireRow.Delete方法があるだろうと確信しています。

この質問に対する最初の回答は、私のニーズに近いものの、これまでのところかなりでした。

Excel VBA to delete blank rows within a range

問題は、私は非常に経験豊富ではないと私はすべてのメソッド、どちらもその例に渡されるすべての引数を理解していないということです。それはちょっと複雑で、私が見たいと思っていることは、何が起こっているのかを理解する方法で文書化された単純なものなので、実際のシナリオで実装することができます。

この質問: Excel VBA: Delete entire row if cell in column A is blank (Long Dataset)

の質問は私の場合ではない有用本当にスプレッドシート全体のための答えを持っています。

私は例を挙げていますが、私はあなたに仕事を依頼していません、私は正直なところ、私が尋ねたことをする方法を学びたいと思っています。

ループ内のいくつかのメソッドを含む負のステップ-1で反復する必要があるかどうかわからない場合や、ループを含むこのための準備ができているメソッドがある場合は、ここで私は経験豊富な人どのように何か、おそらく簡単に簡単です。
ご協力いただければ幸いです。

+2

'x = numrowsから1ステップ-1:範囲(" a "&x)の場合。value = "" then rows(x).delete:next x' –

+0

真剣に???これがうまくいくならばNathanはそれは素晴らしいです。 私はそれを受け入れることができるように答えを構成してください。それは簡単でしたか? –

+1

重複の解を 'Columns(" A:A ")'の代わりに 'Range(" A10:A21 ")'に対して操作するよう修正してください。 –

答えて

1

あなたは範囲の終わりから逆方向にループする必要があるとWSは、あなたが作業しているワークシートがあるので

for x=numrows to 1 step -1 
    if ws.range("a" & x).value="" then ws.rows(x).delete 
next x 

のように、該当する行のインデックスを削除します。

+0

ありがとうございました。はい、私はそれを使用する前に私のアクティブワークシートとしてwsを設定すると仮定します。結局、EntireRow.deleteではありませんでした。それはそうだった!私は休憩を取った後でそれをチェックします(私はかなり疲れました)が、私はそれがうまくいくと確信していますので、私は答えを受け入れるでしょう。 –

+1

@GeorgeEco 'ws.Rows(x)'と 'ws.Range(" A "&x).EntireRow'は同じオブジェクト/範囲を参照しています。どちらの場合も同じ結果が得られます。 –

+0

Nathan、David私は21行目から10行目までを確認する必要がある場合、 x = 21〜10のステップ-1を実行する必要があると仮定します。 でしょうか? –

関連する問題