View Single Post
  #21   Report Post  
Posted to microsoft.public.excel.programming
L. Howard L. Howard is offline
external usenet poster
 
Posts: 852
Default Array list writing to an Array of 'scattered cells' ?

On Saturday, March 25, 2017 at 8:04:49 AM UTC-7, Claus Busch wrote:
Hi Howard,

Am Sat, 25 Mar 2017 07:41:34 -0700 (PDT) schrieb L. Howard:

I got an error at first and added Dim vaSrc.
Now I get no error but no copy to the workbooks.


your didn't refer correctly. And the ranges have the same direction so
you don't have to transpose.

Try:

Sub Copy_Range_to_Range_Single_to_Single()
Dim n&, v1, v2

Dim wksSrc As Worksheet, wksTgt As Worksheet
Dim vaSrc


Const sSrc = "A1,C3,E5,G7,I10"
Const sTgt = "P2,N4,L6,J8,H10"
Const sSrcTgt = "A4:A6|O4:O6,C5:C8|P5:P8,A9|Q9,B11|R11"

'Set ref to source sheet
Set wksSrc = ThisWorkbook.Sheets("Sheet3")

On Error GoTo Cleanup

'Set 1st target sheet and process it
Set wksTgt = Workbooks("Other.xlsm").Sheets("Sheet2")
v1 = Split(sSrc, ","): v2 = Split(sTgt, ",")

For n = LBound(v1) To UBound(v1)

wksTgt.Range(v2(n)) = wksSrc.Range(v1(n))
Next 'n

'Set 2nd target sheet and process it
Set wksTgt = Workbooks("SomeOther.xlsm").Sheets("Sheet4")
v1 = Split(sSrcTgt, ",")

For n = LBound(v1) To UBound(v1)

'Parse the Src:Tgt cell addresses
v2 = Split(v1(n), "|")

wksTgt.Range(v2(1)).Value = wksSrc.Range(v2(0)).Value
Next 'n

Cleanup:

Set wksSrc = Nothing: Set wksTgt = Nothing
End Sub


Regards
Claus B.


Hi Claus,

Well, that sure works nicely!
This is pretty deep coding for my pay grade, but I can follow most of it reading it, but writing it is a booger.

Thanks, it works very well now.

Howard