[[20160105105040]] 『空欄セルを調べる』(NESA) ページの最後に飛ぶ

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

 

『空欄セルを調べる』(NESA)

一行目には区分?が入っています。二行目はその区分の詳細?のようなタイトルが入っています。
例えば、N~U列の1行目には、[基本的な情報]、N~Uの2行目には、[氏名]や[住所]、[電話番号]など。
1行目は区分ごとに結合されています。

A列で文字列の入っている最終行
MaxRow = Cells(Rows.Count, 1).End(xlUp).Row
1行目で文字列の入っている最終列
MaxColomn = .Range("IV1").End(xlToLeft).Offset(0, 1).Column - 1

この範囲の中で、空欄・空白のセルが存在するか調べたいです。

しかし、この範囲の中で、一部「空欄でも良いセル」のある列があり、
B~M列だけは空欄チェックせず、A列と、N列以降だけチェックをしたいです。

この処理を複数のシートに適用させたいのですが、その場合、シートによって「空欄でも良いセル」のある列数が違います。
なので、B~M列は空欄チェックしない、という風に列指定することができません。
B~M列の場合もあれば、B~F列や、B~N列の場合もあります。始まりはすべてB列ですが終わりが固定されていません。

「空欄でも良いセル」の最後の列のタイトルは必ず[健康]と入っています。
なので、[健康]という文字列の入ったセルを探して、そのセル番地を取得?する、みたいな……

A列は空欄チェック、B列~ある列までは空欄チェックしない、ある列の次の列から文字列の入った最終列までチェック、という感じです。

ごちゃごちゃとたくさん書いてしまってすみません。
調べて書いてみようと思ったのですが、自分ではまとめられなかったので、何方かお助け下さい。お願いします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 連想配列でシート名ごとに空欄でも良いセル情報を作って、Arrayで列番号を連想配列のItemに持てば
 出来ませんか?

 1行目が結合とか、2行で1データみたいな作りは好かないですが・・・

 差支えなければ
[[20110209184943]] 『[談]シートレイアウトの投稿どうしてますか?』(momo)
 こちらのコードでシートレイアウトアップされてはいかがですか?

(稲葉) 2016/01/05(火) 12:08


 稲葉さん指摘の通り、具体的なサンプル提示があれば、より明確に要件を理解できそうですね。
 とりあえず、想像をたくましくして。 空白セルを把握してそれを、どうしたいのかによって
 適したコードがあると思いますが、とりあえず空白セルを調べるだけのコードです。
 なお、本当の空白セルを対象にしています。(式などで見かけ上の空白になっているセルは空白とみなしていません)

 なお、コード中の Sh.Select は不要なコードですが、メッセージの確認をやりやすくするために記述しています。

 Sub Test()
    Dim sh As Worksheet
    Dim z As Variant
    Dim r1 As Range
    Dim r2 As Range
    For Each sh In Worksheets
        sh.Select
        z = Application.Match("健康", sh.Rows(2), 0)
        If IsError(z) Then
            MsgBox sh.Name & " のタイトル行に 健康 がないので処理スキップします"
        Else
            With sh.Range("A1", sh.UsedRange)
                With .Offset(2).Resize(.Rows.Count - 2)
                    Set r1 = Nothing
                    Set r2 = Nothing
                    On Error Resume Next
                    Set r1 = .Columns("A").SpecialCells(xlCellTypeBlanks)
                    Set r2 = .Offset(, z).Resize(, .Columns.Count - z).SpecialCells(xlCellTypeBlanks)
                    On Error GoTo 0
                    If Not r1 Is Nothing Then
                        MsgBox sh.Name & " のA列の空欄は以下のセルです" & vbLf & r1.Address
                    Else
                        MsgBox sh.Name & " のA列に空欄はありません"
                    End If
                    If Not r2 Is Nothing Then
                        MsgBox sh.Name & " の健康列の右側の空欄は以下のセルです" & vbLf & r2.Address
                    Else
                        MsgBox sh.Name & " の健康列の右側に空欄はありません"
                    End If

                End With
            End With
        End If
    Next

 End Sub

(β) 2016/01/05(火) 13:37


稲葉様

回答ありがとうございます。
こんな素晴らしいものを作成された方がいらっしゃったのですね!

    |[A]      |[B]     |[C]|[D]|[E]|[F]|[G]|[H] |[I]     |[J]     |[K] |[L]     |[M] 
 [1]|CDNO     |BIT     |   |   |   |   |   |    |基本情報|        |    |        |    
 [2]|CDNO     |基本情報|  1|  2|  3|  4|  5|健康|氏名    |郵便番号|住所|電話番号|備考
 [3]|124682134|        |   |   |   |   |   |    |        |        |    |        |    
 [4]|543328552|        |   |   |   |   |   |    |        |        |    |        |    

複数あるシートのうちの一つを例として作成しました。
この場合は、1行目に[BIT]と書かれてある、B~H列が「空欄でも良いセル」です。

(NESA) 2016/01/06(水) 10:33


β様

回答ありがとうございます。
自分のやりたいことをもう少し明確にまとめてみます。コード参考にさせていただきます。

(NESA) 2016/01/06(水) 10:43


 実際のデータと求める結果が無いとどうにも・・・
(稲葉) 2016/01/06(水) 10:50

稲葉様

    |[A]      |[B]     |[C]|[D]|[E]|[F]|[G]|[H] |[I]       |[J]     |[K]   |[L]          |[M] 
 [1]|CDNO     |BIT     |   |   |   |   |   |    |基本情報  |        |      |             |    
 [2]|CDNO     |基本情報|  1|  2|  3|  4|  5|健康|氏名      |郵便番号|住所  |電話番号     |備考
 [3]|124682134|○      |   |   |   |   |   |    |田中 太郎|100-0000|東京都|090-0000-0000|    
 [4]|543328552|        |   |   |   |   |   |    |瀬野 芳子|100-0000|東京都|090-0000-0000|-   

実際には、このようなデータが入っています。
BIT(B~H列)は、そのタイトルの範囲(B列なら基本情報(I~M列))に新しく入力があった場合は○が入っています。
このデータの場合、M3が空欄なので空欄セルとしてエラーメッセージなどを出したいと思っています。
基本的に入力する必要がないセルはハイフンを入れるようにしているのですが、入れ忘れている人がいるので、、、
(NESA) 2016/01/06(水) 15:43


 でしたら、βさんのコードそのまま使えばよいのではないですか?
 分かるようにするなら、msgboxのところを塗りつぶしにする等、
 大変使いやすいコードになってますよ!!
(稲葉) 2016/01/06(水) 17:36

コメント返信:

[ 一覧(最新更新順) ]


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