Excel VBA テクニック集
複数のセルをまとめて参照・更新(Unionメソッド)





Excel VBA テクニック集
複数のセルをまとめて、参照又は更新する方法です。まとめる方法は「Union」メソッドを使います。

たとえば、セルの背景に色が付いているとき、そのセルをロックする場合です。 方法は、セルを1個ずつ背景色を判断し、背景色があればロックすることになります。 ただし、セル1個ずつロックすると、時間がかかります。 そこで、背景に色が付いていセルを「Union」メソッドでまとめ、まとめたRangeに対し1回の更新で済ませます。

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

    Excel_App.ActiveSheet.Cells.Select
    Excel_App.ActiveSheet.Cells.Locked = False

    Set Union_Obj = Nothing
    Set Range_Obj = Excel_App.ActiveSheet.Range("A1:Z50")
    For Each Cell_Obj In Range_Obj
        '背景色があったならば
        If Cell_Obj.Interior.ColorIndex <> xlColorIndexNone Then
            If Union_Obj Is Nothing Then
                Set Union_Obj = Cell_Obj
        	Else
        	Set Union_Obj = Excel_App.Application.Union(Union_Obj, Cell_Obj)
        	End If
            End If
        Next
    If Not Union_Obj Is Nothing Then
        Union_Obj.Select
        Union_Obj.Locked = True
        Excel_App.ActiveSheet.Protect
        End If
    Set Union_Obj = Nothing
    Set Cell_Obj = Nothing
    Set Range_Obj = Nothing
たとえば下記の例であれば、Union_Objは「B5:D6,B9:D10」の範囲がセレクトされたRangeオブジェクトになります。


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