Excel VBA テクニック集
セル幅によるエラー表示「###」の検索





Excel VBA テクニック集

セル幅によるエラー表示「###」の検索します。


検索方法は、検索対象を「値」にして「#」で検索になりますが、これをマクロで行います。


単純に検索だけではうまくゆきません。
たとえばエラー表示「#DIV/0!」も対象になるので、対象外にしなければなりません。
たまたまセルの値が「#・・・」のような場合も、対象外にしなければなりません。
VBAで言うと、Range("A2").Valueはメモリ上の値、Range("A2").Textは表示上の値になるので、これをうまく使って検索します。

使い方は、ファイル一覧を使った応用の、「マクロ専用ファイル」によるマクロ実行に、下記コードを入れます。
    Dim Cell_Obj As Object
    Dim Addrs_Frm As String

    Set Cell_Obj = Excel_App.ActiveSheet.Cells.Find(what:="#", LookIn:=xlValues, LookAt:=xlPart _
                                                        , MatchCase:=True, MatchByte:=False)
    If Cell_Obj Is Nothing Then
        Exit Sub
        End If

    Addrs_Frm = Cell_Obj.Address '最初のセルの位置を記録します。
    Do Until Cell_Obj Is Nothing            
        Text_Frm = Cell_Obj.Text
        For I = 1 To Len(Text_Frm)
            If Mid(Text_Frm, I, 1) <> "#" Then 'もしも「#」以外の文字が表示されていれば対象外
                GoTo ErrW10
                End If
            Next I
        If IsError(Cell_Obj.Value) = False _
        And CStr(Cell_Obj.Value) = Cell_Obj.Text Then 'もしもセルがエラーでなくて、かつセルの値と表示が一致すれば対象外
            GoTo ErrW10
            End If
        Debug.Print Cell_Obj.Address, "セル幅不足"
ErrW10:
        Err = 0
        Set Cell_Obj = Excel_App.ActiveSheet.Cells.FindNext(Cell_Obj)
        If Cell_Obj Is Nothing Then
            Exit Do
            End If
        If Addrs_Frm = Cell_Obj.Address Then '検索して最初のセルに戻ったら終了
            Exit Do
            End If
        Loop
    Set Cell_Obj = Nothing

「こだわりハウス」写真館| 数学公式集| ピンポイントストリートビュー| FaceBook| Excel Vba テクニック集| Excel 計算式解析・他解析| 富山の建築家| Excel 計算式解析・他解析| 積分の定義・積分の記号の意味の研究|