วันพฤหัสบดีที่ 25 กรกฎาคม พ.ศ. 2556

Excel 2010 Vba Using While Wend Funtion

                            Excel 2010 Vba Using While Wend Funtion หากว่าเราต้องการทำ Animation แบบง่ายๆบน Microsoft Excel 2010 แทนก... thumbnail 1 summary
                            Excel 2010 Vba Using While Wend Funtion


หากว่าเราต้องการทำ Animation แบบง่ายๆบน Microsoft Excel 2010 แทนการใช้คำสั่ง Timer แล้วละก็ เรามีทางเลือกอยู่หลายทางในการทำงานนี้ เช่น การใช้คำสั่ง While…Wend ครอบประโยคคำสั่ง พร้อมกับใช้ คำสั่ง Doevents ใส่ภายใน เพื่อไม่ให้โปรแกรมเรา Hang เสียก่อน โดยรูปแบบของการใช้ ชุดคำสั่ง การทำซ้ำ แบบ While…Wend แล้วมี Doevents อยู่ข้างใน มีรูปแบบดังนี้


While



ประโยคคำสั่งต่างๆที่เราต้องการ


Doevents


Wend


ตัวอย่างที่จะแสดงให้เห็นวันนี้ คือ เราจะมาจำลองการทำงานของ ฟังก์ชั่น ดังกล่าว เพื่อย้าย Control Image ที่บรรจุรูปภาพอยู่ ให้เคลื่อนย้ายจนพ้นหน้าจอ ของ Microsoft Excel 2010 พอ Control image เคลื่อนพ้นหน้าจอไปแล้วเราก็จะให้มันกลับมาอยู่ที่ตำแหน่ง 0 ของหน้าจอ Microsoft Excel 2010


กล่าวสั้นๆคือ “พอพ้นจอ จะกลับมาที่จุดศูนย์ พออยู่ที่จุดศูนย์ก็จะเคลื่อนไปจนพ้นจอ ๆ” เป็นเช่นนี้ไปเรื่อยๆ จนกว่าเราจะสั่งหยุดรันโปรแกรม


เพื่อความเข้าใจที่มากขึ้น เรามาดูภาพผลลัพธ์ที่เราต้องการกันว่า เป็นแบบไหน ตามภาพด้านล่างเลยครับ

















เมื่อเข้าใจแล้วว่าเราต้องการงานประมาณนี้ เราก็มาลงมือทำ Workshop นี้กันดีกว่า


· ขั้นตอนแรก เปิด Microsoft Excel 2010 ขึ้นมา

คลิ้กที่ แท็บ Developer (ถ้าแท็บนี้ยังไม่ แสดงก็เอาออกมาแสดงซะ) แล้วคลิ้กที่ insert (tool) แล้วคลิ้ก CommandButton และ Image ที่อยู่ใน ส่วนของ Activex Controls อย่างละ 1 จากนั้นนำมาวาดบน sheet1 บน Microsoft excel 2010 ดูภาพด้านล่างประกอบด้วยครับ







จัดวางคอนโทรต่างให้ได้ดังภาพด้านล่าง



หลังจากนั้นให้เราคลิ้กขวาที่ Image1 แล้วเลือกรูปภาพมาใส่ (แนะนำว่าให้ใช้รูปภาพนามสกุล .bmp หรือนามสกุลที่มันรองรับ) ดูภาพด้านบนประกอบน่ะครับ


ส่วนตรง PictureSizemode ให้เลือกเป็น fmPictureSizeModeStretch ตามภาพเลย


· หลังจากนั้น ก็คลิ้กขวาที่ CommandButton แล้วกำหนด Caption โดยให้พิมพ์คำว่า “Move Picture” ลงไปแทน


· จากนั้นให้เราดับเบิ้ลคลิ้กที่ CommandButton แล้วใส่โค้ดต่อไปนี้ลงไปครับ


Private Sub CommandButton1_Click()


i = i + 1


While i <> 0


Image1.Left = Image1.Left + 50


DoEvents


If Image1.Left >= Windows.Application.Width Then


Image1.Left = 0


i = 1


End If


Wend


End Sub



· กด ALT+F11 เพื่อกลับมาที่ Microsoft Excel 2010 อีกครั้ง

ทำการทดสอบโปรแกรมว่าทำงานถูกต้องหรือไม่โดยกดที่ปุ่ม Design Mode ให้เด้งขึ้นมา ตามภาพด้านล่าง





· หลังจากนี้เราก็สามารถกดที่ปุ่ม Move Picture (CommandButton) เพื่อสั่งให้ Image1 เคลื่อนที่ได้แล้วครับ

หากต้องการที่จะแก้ไขโปรแกรม เราสามารถสั่งให้โปรแกรมหยุดทำงาน โดยกดที่ Design Mode อีกครั้ง ซึ่งปุ่ม Design Mode
จะยุบลงดังภาพด้านล่าง




· นั่นแสดงว่า เราสามารถแก้ไขโปรแกรมต่างๆได้แล้วครับ เพราะว่าตอนนี้อยู่ในโหมดแก้ไขนั่นเอง