Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hello
How can I use VBA to write a range to an array, change the elements of the array, and then write back to a worksheet? I started with this but got an error for the line Data(i)... Sub ArrayTest() Dim Data As Variant, i As Integer Data = Range("A1:A10").Value For i = LBound(Data) To UBound(Data) Data(i) = Data(i) + 10 Next i End Sub Here I want to take range A1:A10, add 10 to all of the values, and the write it back to the worksheet. I want to do this as I think it is faster then maipulating individual cells in a range, especially when the range is large. Any help very welcome. Regards Alex |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Alex,
Try this: Sub ArrayTest() Dim Data As Variant, i As Integer Data = Range("A1:A10") For i = LBound(Data) To UBound(Data) Data(i, 1) = Data(i, 1) + 10 Next i Range("A1:A10") = Data End Sub HTH "Alex" wrote: Hello How can I use VBA to write a range to an array, change the elements of the array, and then write back to a worksheet? I started with this but got an error for the line Data(i)... Sub ArrayTest() Dim Data As Variant, i As Integer Data = Range("A1:A10").Value For i = LBound(Data) To UBound(Data) Data(i) = Data(i) + 10 Next i End Sub Here I want to take range A1:A10, add 10 to all of the values, and the write it back to the worksheet. I want to do this as I think it is faster then maipulating individual cells in a range, especially when the range is large. Any help very welcome. Regards Alex |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Just to add to Toppers excellent suggestion,
Any array formed in this manner will always be a 2D array. Also, it will always be 1 based regardless of the option base setting. Dim v as Variant v = Range(a1:A10).Value is v(1 to 10, 1 to 1) v = Range(A1:J1).Value is v(1 to 1, 1 to 10) and of course v = Range(A1:J10).Value is v(1 to 10, 1 to 10) -- Regards, Tom Ogilvy "Toppers" wrote in message ... Alex, Try this: Sub ArrayTest() Dim Data As Variant, i As Integer Data = Range("A1:A10") For i = LBound(Data) To UBound(Data) Data(i, 1) = Data(i, 1) + 10 Next i Range("A1:A10") = Data End Sub HTH "Alex" wrote: Hello How can I use VBA to write a range to an array, change the elements of the array, and then write back to a worksheet? I started with this but got an error for the line Data(i)... Sub ArrayTest() Dim Data As Variant, i As Integer Data = Range("A1:A10").Value For i = LBound(Data) To UBound(Data) Data(i) = Data(i) + 10 Next i End Sub Here I want to take range A1:A10, add 10 to all of the values, and the write it back to the worksheet. I want to do this as I think it is faster then maipulating individual cells in a range, especially when the range is large. Any help very welcome. Regards Alex |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Writing to An Array or Collection | Excel Programming | |||
Q: Best way to take data from VBA into graphs without writing data to worksheets? (Can a named range refer to an array in memory only?) | Excel Programming | |||
Writing Range to Array | Excel Programming | |||
Prb: Writing Array functions in VBA | Excel Programming | |||
Writing Array Formulas in VBA | Excel Programming |