Page 1 of 1

VBA--WorksheetFunction และ Application ครับ

Posted: Fri Apr 10, 2015 6:36 pm
by DhitiBank
อาจารย์ครับ เห็นบางคนที่ใช้ฟังก์ชันใน VBA เช่น Index ใช้คำนำหน้าไม่เหมือนกัน (เรียกไม่ถูกครับ ไม่รู้เรียกว่าอะไร :flw: ) เช่น

WorksheetFunction.Match(...,i) หรือบางท่านก็ใช้

Application.Match(...,i)

(สมมติว่า i เป็นตัวเลขที่ทราบค่าแล้วครับ)
ผมสงสัยว่ามันต่างกันยังไงครับ? ถ้าใช้ WorksheetFunction เวลาพิมพ์จุด "." ก็จะมีคำสั่งมาให้เลือก (ใช่เรียกว่า Intellisense หรือเปล่าครับ) ในรายการจะมีสูตรที่ใช้บ่อยๆ ใน worksheet ขึ้นมาให้เลือกด้วย และเวลาจะพิมพ์ i ก็จะมี message ขึ้นมาบอกว่า Arg2 as Double แต่ผมประกาศ i เป็น integer คำสั่งยังรันได้

ส่วนเวลาใช้ Application เวลาพิมพ์ "." จะไม่มีสูตรพวกนี้ให้เลือก แต่ก็ยังใช้ได้ เลยงงว่า หากเวลาต้องการเรียกสูตรที่ใช้บ่อยๆ ใน worksheet มาใช้ใน vba เราควรใช้แบบไหนครับ

Re: VBA--WorksheetFunction และ Application ครับ

Posted: Fri Apr 10, 2015 7:04 pm
by snasui
:D หลัก ๆ ต่างกัน 2 ประการครับ คือ

หากใช้ x = Application.WorksheetFunction.Index... จะมี Intellisense มาช่วยในการเขียน Code และหากเกิด Error โปรแกรมจะให้ทำการ Debug เลย
หากใช้ x = Application.Index... จะไม่มี Intellisense มาช่วยและหากติด Error โปรแกรมจะ Run ต่อได้แต่จะเก็บค่า Error ไว้ที่ตัวแปร x

Re: VBA--WorksheetFunction และ Application ครับ

Posted: Fri Apr 10, 2015 7:23 pm
by DhitiBank
แสดงว่าเขียนแบบเต็มๆ ก็ดีสำหรับคนเริ่มหัด vba สินะครับ ถ้าอย่างนั้นผมเขียนแบบเต็มๆดีกว่า

ขอบคุณครับ