Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2857 / 13644 ツリー ←次へ | 前へ→

【65562】行削除 添削お願いします。 ganba 10/6/9(水) 10:43 質問[未読]
【65563】Re:行削除 添削お願いします。 ponpon 10/6/9(水) 12:56 発言[未読]
【65564】Re:行削除 添削お願いします。 ganba 10/6/9(水) 13:50 発言[未読]
【65566】Re:行削除 添削お願いします。 ponpon 10/6/9(水) 20:13 発言[未読]
【65576】Re:行削除 添削お願いします。 ganba 10/6/10(木) 17:04 お礼[未読]
【65577】Re:行削除 添削お願いします。 ponpon 10/6/10(木) 17:31 発言[未読]

【65562】行削除 添削お願いします。
質問  ganba  - 10/6/9(水) 10:43 -

引用なし
パスワード
   A1:N****列までデータがあります。1行目はタイトルA列は連番です。
ところがB2:N****にはデータが歯抜けで入っており、まったくデータのない行もあるので、そんな行を削除しようと思って、マクロを見よう見まねで作りました。
ところが、うまくいきません。添削をお願いいたします。
Private Sub 空白行削除_Click()
Dim r As Range
Dim myr As Range
On Error Resume Next
Set myr = Range("B2:N10000")

For Each r In myr
  If r.Value = "" And r.Offset(0, 0).Value = "" And r.Offset(0.13).Value = "" Then r.ClearContents
  
Next r
myr.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
よろしくお願いいたします

【65563】Re:行削除 添削お願いします。
発言  ponpon  - 10/6/9(水) 12:56 -

引用なし
パスワード
   h t tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=65548;id=excel

こちらの続きに書かれたらいかがでしょうか?
ほったらかしはよくないと思います。
違う人だったらごめんなさい。

>For Each r In myr
>  If r.Value = "" And r.Offset(0, 0).Value = "" And r.Offset(0.13).Value = "" Then


↑これだと、r自身とrの13こ隣のセルが""だったらという条件になります。

r.ClearContentsは、行削除ではなく、rの値をクリアするになります。

もともと、r自身は""なので意味ないと思います。

【65564】Re:行削除 添削お願いします。
発言  ganba  - 10/6/9(水) 13:50 -

引用なし
パスワード
   ▼ponpon さん:

>ほったらかしはよくないと思います。
>違う人だったらごめんなさい。
>
今、どきどきしてます。小さな会社の社内でマクロの超初心者(はっきりいって解っている者はゼロ)で、やっています。質問が重複したこと、お詫びします。どちらでも、まだ解決をみてませんので、もう少しがんばります。

【65566】Re:行削除 添削お願いします。
発言  ponpon  - 10/6/9(水) 20:13 -

引用なし
パスワード
   こんな感じでできると思います。
A列には、データがある分だけ連番があると考えています。
シート1で考えてます。
オートフィルターで抽出して削除する方法も考えましたが、
tukinoさんの方法でやってみました。

Option Explicit
Sub test()
  Dim myR As Long, i As Long

  With Sheets("Sheet1")
    myR = .Cells(.Rows.Count, "A").End(xlUp).Row
    For i = myR To 2 Step -1
      If Application.CountA(Cells(i, "B").Resize(, 13)) = 0 Then
        Rows(i).Delete
      End If
    Next
  End With
End Sub

【65576】Re:行削除 添削お願いします。
お礼  ganba  - 10/6/10(木) 17:04 -

引用なし
パスワード
   ▼ponpon さん:
ありがとうございます。丸写しでうまくいきました。

>    >    For i = myR To 2 Step -1
>     の意味がよくわからなくて、ずいぶん調べてみたのですが、一番下のデータから作業をするという意味でしょうか。聞いている事が的をいてなかったらごめんなさい。
>

【65577】Re:行削除 添削お願いします。
発言  ponpon  - 10/6/10(木) 17:31 -

引用なし
パスワード
   ▼ganba さん:
>▼ponpon さん:
>ありがとうございます。丸写しでうまくいきました。
>
    For i = myR To 2 Step -1
     の意味がよくわからなくて、ずいぶん調べてみたのですが、一番下のデータから作業をするという意味でしょうか。聞いている事が的をいてなかったらごめんなさい。

行削除は、下からが基本です。

2857 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free