[[20210205145202]] 『【VBA】空白セルのある行の削除』(かれん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『【VBA】空白セルのある行の削除』(かれん)

こんにちは。よろしくお願いいたします。
5行10列(A2:J6)が転記されるマクロがすでに組まれています。
けれども、F列に空欄がある場合には、その行は削除したいです。
元は空欄であっても、転記の際に「0」になってしまうようです。
Range("F5:F11").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
など記入していろいろ試してみましたがうまくいきません。
お助けいただけますか。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


 試した限りでは問題なく作動しましたが。
 うまくいかない、とはどのようにうまくいかないのでしょう?

 シートの保護をしていてエラーになるとかではないですか?
(OK) 2021/02/05(金) 15:21

ありがとうございます。
実行時エラー'1004'
Rangeクラスの Delete メソッドが失敗しました。
となってしまいます。
(かれん) 2021/02/05(金) 15:42

 再掲です。

 >シートの保護をしていてエラーになるとかではないですか?

 ↓は該当しませんか?

http://club-vba.tokyo/vba-delete-error/
(OK) 2021/02/05(金) 16:08


ありがとうございます。
調べてみましたが保護ではないようです。
簡単な表を作成して試してみましたが、やはり実行できません。
以下のようなコードを作ってみましたが、
こちらであれば作動しました。
    Dim i As Long
        For i = 7 To 3 Step -1
            If Cells(i, 6).Value = "" Then
                Cells(i, 6).EntireRow.Delete
            End If
        Next
(かれん) 2021/02/06(土) 23:22

レイアウトの提示もないし、”うまくいかない”コードの全体も示されてないのであてずっぽうですが、Nothingを対象にしてしまっているとかないですか?
    Sub 実験()
        Dim tmpRNG As Range
        On Error Resume Next
        Set tmpRNG = Range("F5:F11").SpecialCells(xlCellTypeBlanks)
        On Error GoTo 0

        If tmpRNG Is Nothing Then
            MsgBox "該当セル無し"
        Else
            MsgBox tmpRNG.Address(0, 0)
        End If
    End Sub

(もこな2 ) 2021/02/07(日) 20:31


お手数おかけいたします。
「実験」でもうまくできませんでした。
マクロ超初心者です。
大体、以下のようなリストです。
別のシートから7行転記されます。
新しいものがA5からH11に転記され、下にずれていきます。
毎回7行転記されますので、いつも後から不要な行を削除しているのですが、
転送と同時に不要な行が自動で削除されるようにマクロを組みたいのです。
F行が空欄、もしくは「0」のとき、行が削除されるようにしたいです。

年 月 日 会社名 納品先 製品 単価 個数
2021 5 1 G社 J社 S-66 33 30
2021 5 1 G社 J社 T-66 45 30
2021 5 1 A社 S社 F-89 15 60
2021 5 1
2021 5 1
2021 5 1
2021 5 1
2021 4 1 A社 S社 T-55 86 100
2021 3 1 A社 S社 S-66 33 50
2021 3 1 A社 S社 F-89 15 60

(かれん) 2021/02/08(月) 11:08


>「実験」でもうまくできませんでした。
繰り返しになりますが、「うまくいかない」では何がどうなっているのか判りませんので、どのようになったのか説明してください。

>大体、以下のようなリストです。
Excelでは、行と列で情報を管理していますので、それも提示した方がよろしいとおもいます。

 ______A____B____C_____D______E______F___G_____H_______
  4   年   月   日  会社名  納品先 製品 単価 個数
  5  2021   5    1    G社    J社   S-66  33   30
  6  2021   5    1    G社    J社   T-66  45   30
  7  2021   5    1    A社    S社   F-89  15   60
  8  2021   5    1
  9  2021   5    1
 10  2021   5    1
 11  2021   5    1
 12  2021   4    1    A社    S社   T-55  86  100
 13  2021   3    1    A社    S社   S-66  33   50
 14  2021   3    1    A社    S社   F-89  15   60

>毎回7行転記されますので、いつも後から不要な行を削除している
要らない行は転記しなければよいのでは?

(もこな2) 2021/02/08(月) 12:25


簡易リストで試したところ、空欄を指定するアラートがきちんと出るのですが
その後OKボタンを押しても削除されず無反応です。

すでに、かならず7行を転記する設定になっていますので
転記したものから削除する方法を探しています。

(かれん) 2021/02/08(月) 12:55


空欄ではなく「0」が返っていたのが
うまくいかなかった一つの要因のようでした。
0を空欄にするコードを入れて、
その後に削除するコードを入れたところ完成しました。
ご迷惑をおかけいたしました。
どうもありがとうございました。
(かれん) 2021/02/08(月) 16:30

>空欄を指定するアラートがきちんと出る
>その後OKボタンを押しても削除されず無反応です。
「アラート」が何かよくわかりませんが、提示したコード「実験」は、該当するセルがあればそのセル番地を、無ければ"該当セル無し"と【メッセージボックス】で表示するものであって、削除する機構は組み込んでないのはわかりますよね?
そこがわからないのであれば、まずは【ステップ実行】してコードの動きを研究してみてください。

>空欄ではなく「0」が返っていたのがうまくいかなかった一つの要因のようでした。
だから、

 Range("F5:F11").SpecialCells(xlCellTypeBlanks)        .EntireRow.Delete
 ^^^^^^^^^^^^^^^^^^↑^^^^^^^^^^^^^^^^^^^^^^^^^^           
 (空白セルが無くて)ここが Nothing になっている      を含む行を削除

と言っていたんですが・・・・
(ちなみによく考えるとNothingでなくて、実行時エラーになってるというのが正しいんですかね・・・)

>すでに、かならず7行を転記する設定になっていますので
こちらもよく分かりませんが、転記(コピー?)する前際に、要らないデータは除外すればいいとおもうんですけどね・・

(もこな2) 2021/02/08(月) 20:00


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.