VBA-Better-Array
VBA-Better-Array copied to clipboard
Handle multiarea ranges with FromExcelRange
Sub Currently()
Dim ws As Worksheet
Set ws = Sheet1
ws.UsedRange.Clear
Dim multiArea As Range
Set multiArea = ws.Range("A1:B2, A3, B5:D5")
multiArea.Value2 = 1
Dim ba As New BetterArray
ba.FromExcelRange multiArea
ba.ToExcelRange ws.[F1] ' fills only A1:B2 area
End Sub
Sub FeatureRequest()
Dim ws As Worksheet
Set ws = Sheet1
ws.UsedRange.Clear
Dim multiArea As Range
Set multiArea = ws.Range("A1:B2, A3, B5:D5")
multiArea.Value2 = 1
Dim ba As New BetterArray
' Loops through rows of every area in a range
' and pushes row values as an array to BetterArray instance
Dim area As Range, row As Range, i As Long, arr() As Variant
For Each area In multiArea.Areas
For Each row In area.rows
If row.Cells.Count = 1 Then
arr = Array(row.Value2)
Else
ReDim arr(1 To row.Cells.Count)
For i = 1 To row.Cells.Count
arr(i) = row.Value2(1, i)
Next
End If
ba.Push arr
Next
Next
ba.ToExcelRange ws.[F1]
End Sub
And even maybe to add a function PushFromExcelRange, which will work like FromExcelRange but will keep previous data