Excel Expert Training
Home

การใช้ Evaluate method

โดย คุณอรวีร์

ก่อนอื่นขออธิบายลักษณะการทำงานของ VBA สักเล็กน้อยค่ะ

Application สมัยใหม่เปิดโอกาสให้ Application อื่นเข้าใช้ทรัพยากรของตนเอง ดังนี้ ภาษาคอมพิวเตอร์รุ่นใหม่มักจะมีช่องทางให้สามารถเรียกบริการหรือส่วนของ Application อื่นมาใช้งานได้ เช่น

ถ้าต้องการให้ Cell A1 ของ Excel มีเลข 10 และ B1 มีสูตร =BahtText(A1) สามารถใชัภาษา javascript ดังนี้

ExcelSheet = new ActiveXObject("Excel.Sheet");
Excel = ExcelSheet.Application;
Excel.Workbooks(1).Sheets(1).Range("A1").Value = 10;
Excel.Workbooks(1).Sheets(1).Range("B1").Formula = "=BahtText(A1)";
alert(Excel.Workbooks(1).Sheets(1).Range("B1").Value);
Excel.Workbooks(1).Close;

ถ้างานเดียวกันใช้ Visual Basic จะเขียนได้แบบนี้

Set ExcelSheet = CreateObject("Excel.Sheet")
Set Excel = ExcelSheet.Application
Excel.Workbooks(1).Sheets(1).Range("A1").Value = 10
Excel.Workbooks(1).Sheets(1).Range("B1").Formula = "=BahtText(A1)"
MsgBox Excel.Workbooks(1).Sheets(1).Range("B1").Value
Excel.Workbooks(1).Close

จะเห็นว่า ทั้งสองภาษาข้างต้น ต้องมีการประกาศอ้างถึง ActiveX ของ Excel Application ก่อน เมื่อต้องการอ้างถึง Cell A1 ต้องเริ่มตั้งแต่อ้างถึง Excel Application --> Workbook --> Sheet --> จนถึง A1

Excel ได้จัดเตรียม Objects และ Method , Properties ของมัน จำนวนหนึ่งเพื่อให้ Application อื่นสามารถเข้าถึง-ใช้งานได้ นอกจากนั้นยังมีภาษา Script ฝังใน Excel เอง เรียกว่า VBA (Visual Basic for Application) ซึ่งภาษาแบบเดียวกันนี้มีอยู่ในผลิตภัณฑ์อื่นๆของ Microsoft ด้วย

และเนื่องจากการที่ VBA เป็นภาษา Script ฝังใน Excel Application อยู่แล้ว ทำให้ไม่ต้องประกาศแบบ 2 บรรทัดนี้

Set ExcelSheet = CreateObject("Excel.Sheet")
Set Excel = ExcelSheet.Application

โดยสามารถเริ่มที่ . . .

Excel.Workbooks(1).Sheets(1).Range("A1").Value = 10
Excel.Workbooks(1).Sheets(1).Range("B1").Formula = "=BahtText(A1)"

ได้เลย. ผลการทำงานจะเหมือนกันทุกประการ

และสามารถตัดการอ้างถึง Excel Application ออกได้โดยถือว่า Excel Application เป็น Object แม่ของทุก Objects และสามารถละการอ้างถึง Workbook ได้โดยถือว่าเป็น ActiveWorkbook และสามารถละการอ้างถึง Worksheet ได้โดยถือว่าเป็น ActiveWorksheet จึงสามารถเขียน Code เป็น . . .

Range("A1").Value = 10
Range("B1").Formula = "=BahtText(A1)" ก็ทำงานได้

ขณะที่ Run โปรแกรมภาษา VBA จะใช้ช่องทางสื่อสารในการเข้าถึงทรัพยากรของ Excel ก็เหมือนกับที่ภาษา VB , Javascript และภาษาอื่นๆใช้ เพียงแต่ละบางอย่างไว้ในฐานที่เข้าใจเท่านั้น เหมือนกับมี 2 Application แยกกัน 2 ตัวคือ Excel และภาษา VBA

Function บางตัวที่ชื่อเหมือนกัน แต่วิธีใช้ต่างกัน(เล็กน้อย) บางครั้งก็อาจทำให้เราสับสนได้ เช่น MID( ) ของ Excel และ VBA จำเป็นต้องใช้จำนวน Argument ไม่เท่ากัน   MID("123456",3) ใช้ใน VBA ได้ แต่ใช้ใน Excel Worksheet ไม่ได้.

ตอนหน้าจึงจะเข้าเรื่อง Evaluate Method ค่ะ ถ้ายังไม่เบื่ออ่านกันซะก่อน

ตอนต่อไป ... การใช้ Evaluate method - ตอนที่ 2
 

Home

 

www.xls.i.am
www.tpa.or.th/xlsiam    

21/06/2545