Page 1 of 1

VBA อ้างอิง Range ข้าม workbook

Posted: Thu Jan 09, 2020 11:17 am
by 4ko6yon61
ต้องการ copy ค่าจากอีก workbook นึงมาวางครับ
ทำไมอ้างอิงแบบนี้รัน code ได้

Code: Select all

Workbooks("Score1.xslx").Sheets("Sheet1").Range("A1").Value = Workbooks("Score2.xslx").Sheets("Sheet1").Range("A1").Value
แต่อ้างอิงแบบนี้รันไม่ได้ครับ

Code: Select all

Workbooks("Score1.xslx").Sheets("Sheet1").Range(Cells(1, 1), Cells(1, 1)).Value = Workbooks("Score2.xslx").Sheets("Sheet1").Range(Cells(1, 1), Cells(1, 1)).Value
ปล.ไม่ได้แนบไฟล์ตัวอย่างนะครับ ถามถึงความแตกต่างของการอ้างอิง 2 แบบครับ

Re: VBA อ้างอิง Range ข้าม workbook

Posted: Thu Jan 09, 2020 11:37 am
by logic
ถ้าให้เหมือนกันน่าจะเป็นแบบนี้นะครับ

Workbooks("Score1.xslx").Sheets("Sheet1").Cells(1, 1).Value = Workbooks("Score2.xslx").Sheets("Sheet1").Cells(1, 1).Value


ไม่ต้องใส่ range 😉

Re: VBA อ้างอิง Range ข้าม workbook

Posted: Thu Jan 09, 2020 12:46 pm
by 4ko6yon61
คือ ต้องอ้างอิงเป็นช่วงครับ ไม่ได้ cell เดียว ตามตัวอย่าง ประมาณนี้ครับ

Code: Select all

Workbooks("2.xlsx").Sheets("Sheet1").Range(Cells(1, 1), Cells(4, 1)).Value = Workbooks("1.xlsx").Sheets("Sheet1").Range(Cells(1, 1), Cells(4, 1)).Value

Re: VBA อ้างอิง Range ข้าม workbook

Posted: Thu Jan 09, 2020 2:04 pm
by logic
ลองแบบนี้ครับ Workbooks("2.xlsx").Sheets("Sheet1").Range("a1:a4").Value = Workbooks("1.xlsx").Sheets("Sheet1").Range("a1:a4").Value

การอ้าง cells ตรง ๆ ที่ไม่มีอะไรนำหน้าเป็นการอ้างอิงเซลล์ในชีตปัจจุบัน เวลาอ้าง cells ก็ต้องเหมือนกันการอ้าง range คือมีไฟล์ มีชีตนำถึงจะใช้ได้ครับ