• ベストアンサー

エクセルマクロ 空白行のみ削除しない

http://okwave.jp/qa/q9232296.html で、質問した者です。 度々申し訳ございません。 サンプル画像のG列に空白セルがある場合(画像には、G列には空白行がありませんが)、 空白行は削除したくないのですが、どのようにしたらよろしいか、 ご教授頂けたらと思います。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

以下のように変更してください。 If Cells(i, "F") <= 0 Then Flag = True Else CheckStr = StrConv(Cells(i, "G").Value, vbNarrow) を 0以下が優先の場合F列が0以下ならG列が空白でも削除 If Cells(i, "F") <= 0 Then Flag = True ElseIf Cells(i, "G").Value = "" Then Flag = False Else CheckStr = StrConv(Cells(i, "G").Value, vbNarrow) 空白が優先の場合F列が0以下でもG列が空白なら削除しない If Cells(i, "G").Value = "" Then Flag = False ElseIf Cells(i, "F") <= 0 Then Flag = True Else CheckStr = StrConv(Cells(i, "G").Value, vbNarrow)

eco2012
質問者

お礼

kkkkkmさん、何回もご返答頂きましてありがとうございます。 前回教えて頂いたところを変更するだけでしたので、 非常にわかりやすく、初心者の私でもできました。ありがとうございました。

その他の回答 (1)

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.2

何をしているのか、分かりやすい方法ですと、 Option Explicit Sub Test() Dim i As Integer For i = Range("G" & Rows.Count).End(xlUp).Row To 1 Step -1 If Trim(Cells(i, 7).Value) = "" Then Rows(i).Delete End If Next i End Sub です。 簡単な説明は、 For i = Range("G" & Rows.Count).End(xlUp).Row To 1 Step -1 G列の文字の入っている最終行を取得して、そこから1行目まで、後ろから処理を行います。 次に、「Trim(Cells(I, 7).Value)」とやっているのは、スペースが入力されていて、見た目が空白の場合があるので、セルの前後の無用なスペースを削除しています。 これで、スペースだけが入力されている場合も、その空白が削除(Trim()」され、ちゃんと、「空白」と認識されます。 あとは、その行を削除しているだけです。 きっと、他のスマートなやり方をされる方たちは、フィルタで空白セルを集めて、それをまとめて、削除するようなやり方をされると思います。 私のマクロは鈍くさいですが、分かりやすいとは思います。

eco2012
質問者

お礼

ご回答ありがとうございます。 また、分かりやすい説明を頂き助かります。 今回は回答者1の方が何度も教えてくださったので、 申し訳ございませんが、ベストアンサーは回答者1の方にさせて頂きます。

関連するQ&A