指定のセル範囲の各Rangeオブジェクトを2次元配列に格納
Public Function CreateRangeArray( _ TargetRange As Range, _ RangeArray() As Range, _ Optional BaseIndex As Long = 0 _ ) If Not TypeOf TargetRange Is Range Then CreateRangeArray = 1 Exit Function End If If BaseIndex < 0 Then CreateRangeArray = 2 Exit Function End If Dim RowList As Object, ColList As Object Set RowList = CreateObject("System.Collections.SortedList") Set ColList = CreateObject("System.Collections.SortedList") Dim Cell As Range For Each Cell In TargetRange.Cells If Not RowList.ContainsKey(Cell.Row) Then Call RowList.Add(Cell.Row, 0) End If If Not ColList.ContainsKey(Cell.Column) Then Call ColList.Add(Cell.Column, 0) End If Next ReDim RangeArray( _ 0 + BaseIndex To RowList.Count - 1 + BaseIndex, _ 0 + BaseIndex To ColList.Count - 1 + BaseIndex _ ) As Range Dim r As Long, c As Long For Each Cell In TargetRange.Cells r = RowList.IndexOfKey(Cell.Row) c = ColList.IndexOfKey(Cell.Column) Set RangeArray(r + BaseIndex, c + BaseIndex) = Cell Next CreateRangeArray = 0 End Function
0 件のコメント:
コメントを投稿