หัวใจของเคล็ดการเพิ่มผลงาน ลดความซับซ้อนของงานด้วย Excel VBA มิได้อยู่ที่การหาทางทำให้สามารถทำงานเสร็จเร็วขึ้น และทำให้งานที่มีขั้นตอนซับซ้อน กลายเป็นงานง่ายขึ้นเท่านั้น ยังต้องหาทางทำให้ตัวรหัส VBA ที่ใช้ มีความซับซ้อนลดลงไปด้วย ซึ่งในบทที่แล้วได้แนะนำชุดคำสั่งชื่อ SendData และจากนี้ไปเราจะมาดูกันว่า รหัสคำสั่งเพียงแค่ 2 บรรทัดใน SendData จะนำไปใช้ในการับส่งข้อมูลในแบบต่างๆกันได้อย่างไร โดยมีข้อแม้สำคัญว่า เราจะไม่แก้ไขรหัส VBA 2 บรรทัดนั้นอีกเลย

ก่อนอื่นมาดูกันอีกทีว่า ชุดคำสั่ง SendData มีหน้าตาอย่างไรและทำงานได้อย่างไร

Sub SendData()
    MyVar = [Source]
    [Target] = MyVar
End Sub

ชุดคำสั่งนี้ สั่งให้ข้อมูลที่อยู่ใน Range Name ชื่อ Source ส่งไปพักไว้ในตัวแปรชื่อ MyVar จากนั้นจึงสั่งให้ MyVar ส่งข้อมูลที่เก็บไว้ต่อไปยัง Range Name ชื่อ Target

ตัวอย่าง

image016

สิ่งที่ต้องการ

ส่งตัวเลข 777 หรือค่าใดๆที่บันทึกไว้ในเซลล์ B4 ไปเก็บไว้ในตารางชื่อ MyData ณ ตำแหน่ง row ที่ 5 ตัดกับ column ที่ 2 หรือตำแหน่งอื่นใดก็ได้ที่อยู่ใน MyData

ขั้นตอนการสร้างงาน

  1. สร้าง Range Name ชื่อ Source ให้กับเซลล์ B4
  2. สร้าง Range Name ชื่อ MyData ให้กับเซลล์ D2:F10
  3. สร้าง Formula Name ชื่อ Target ให้เป็นสูตร
    =INDEX( MyData, $B$2, $B$3)

วิเคราะห์สูตร

Target
=INDEX( MyData, $B$2, $B$3 )

เมื่อกำหนดตำแหน่ง Row และ Column ลงไปในเซลล์ B2 และ B3 ตามลำดับ จะส่งผลให้ข้อมูลจาก Source ส่งไปที่ MyVar ต่อไปยัง Target แล้วสูตร Index จะเป็นตัวกำหนดตำแหน่ง Row และ Column ของเซลล์ที่รับค่าในที่สุด

ต้องระวังในการกำหนดตำแหน่ง Row และ Column เพราะสูตร Index สามารถรับค่าลงไปเฉพาะขอบเขตพื้นที่ของ MyData เท่านั้น ซึ่ง MyData มีขนาดความสูง 9 row และมีความกว้าง 3 column จึงทำให้เลข Row และ Column ช่วงที่ใช้ได้ คือ Row ที่ 1 - 9 และ Column ที่ 1 - 3

Author: สมเกียรติ ฟุ้งเกียรติEmail: This email address is being protected from spambots. You need JavaScript enabled to view it.

E-Learning

Go to top