Category Archives: VBA Knowledge

บทที่ 2 การบันทึก Macro (ต่อ)

การกำหนด Macro ให้กับ Controls แทนที่จะจำ Shortcut ในการเรียกใช้ Macro เราสามารถกำหนดการเรียกใช้ Macro ง่าย ๆ โดยการกำหนด Macro ให้กับ Object ใด ๆ บน Worksheet เช่น Form Control, ActiveX Control, Graphic ต่าง ๆ การสร้างเมนูขึ้นใหม่บน Ribbon

บทที่ 2 การบันทึก Macro

เมื่อทำการบันทึก Macro จะพบว่า Excel ได้เขียน Code Macro ทั้งหมดให้ โดยสามารถที่ Run ซ้ำได้ตามต้องการด้วย Macro ที่ได้บันทึกไว้แล้ว ก่อนที่ท่านจะทำการบันทึก Macro ควรทำการวางแผนขั้นตอนคำสั่งที่ต้องการบันทึก Macro

บทที่ 1 ภาพรวมของ VBA

ภาพรวมของ Visual Basic for Application (VBA) หากท่านต้องการทำงานซ้ำ ๆ ด้วย Excel ท่านสามารถทำให้เป็นอัตโนมัติด้วย Macro ซึ่งเป็นชุดคำสั่งที่เก็บอยู่ใน Module ของ VBA โดยสามารถที่จะ Run Code ได้ทุกเมื่อตามต้องการ

Microsoft Excel Visual Basic for Application

สำหรับ Microsoft Excel Visual Basic for Application (MS Excel – VBA ซึ่งต่อไปนี้จะเรียกว่า VBA เพื่อให้สะดวกต่อการอ้างอิง) นับวันยิ่งจะมีผู้สนใจใช้งานกันมากขึ้นเรื่อย ๆ แต่ยังขาดความรู้พื้นฐาน แม้ว่าเนื้อหาพื้นฐานเหล่านี้จะมีแพร่หลายทั่วไปทาง Internet

Code สั่ง Print ผ่านวงแลน

ปัญหาใช้ Macro สั่ง Print ผ่านวงแลน เมื่อนำไฟล์งานไป print เครื่องอื่น กลับ print ไม่ได้ เนื่องจาก Printer ที่กำหนดค่าไว้ Macro เป็นอีก Port แต่เครื่องที่นำไฟล์ไปใช้เป็นอีก Port ซึ่ง Port ของ Printer ไม่ตรงกัน ตัวอย่างเครื่อง Print ที่กำหนดไว้ใน Macro เครื่องแรก >>\172.30.53.61\OKI MICROLINE 791

การลบ Style จำนวนมากในคราวเดียวด้วย VBA

กรณีทีใช้ Excel 2007 หรือ Version ที่ใหม่กว่าแล้ว Save กลับมาเป็น Excel 2003 หรือ Version ที่ต่ำกว่า บางครั้งจะพบปัญหาว่ามี Format มากเกินกว่าข้อจำกัดของ Excel 2003 หรือ Version ที่ต่ำกว่า ทำให้เปิดไฟล์ไม่ได้ โปรแกรมจะฟ้องว่า Too many difference formats เนื่องจาก Excel 2003 และ Vession ที่ต่ำกว่ามี Style ได้แค่ 4,000 แบบเท่านั้น

การเปลี่ยนชื่อไฟล์จำนวนมากด้วย VBA

กรณีทีเราต้องการเปลี่ยนชื่อไฟล์จำนวนมากและมีอยู่หลาย ๆ โฟลเดอร์คงจะเสียเวลาไม่น้อยหากต้องคีย์เปลี่ยนเอง การเปลี่ยนชื่อไฟล์ในลักษณะดังกล่าวสามารถใช้ VBA เข้ามาช่วยได้ครับ ตามตัวอย่างในภาพด้านล่าง คอลัมน์ A คือ Path ที่ต้องการเปลี่ยนชื่อไฟล์

การเพิ่ม Sheet อัตโนมัติตามรายชื่อที่ให้ไว้ล่วงหน้าด้วย VBA

ในบางงานเราอาจจำเป็นต้องเพิ่มชีทหลาย ๆ ชีท และต้องการให้ชื่อชีทเป็นชื่อที่เรากำหนดไว้แล้วล่วงหน้า การทำเช่นนี้หากทำด้วย Manual จะใช้เวลามาก แต่หากใช้ VBA มาช่วยจะลดเวลาได้มากมายครับ ซึ่งจะขอยกตัวอย่างการใช้ VBA ในการเพิ่มชีทตามด้านล่าง แต่ต้องเตรียมข้อมูล

การตรวจสอบหมายเลข IP ว่าอยู่ใน Range ใดหรือไม่

สำหรับหมายเลข IP ซึ่งต้องมองทีละชุดไปนั้นไม่สามารถใช้การตรวจสอบได้เหมือนเลขธรรมดา ต้องตรวจสอบหมายเลขเป็นชุด ๆ ไป การตรวจสอบด้วยสูตรจึงทำได้ลำบากแต่สามารถใช้ VBA เข้ามาช่วยได้ครับ สำหรับตัวอย่าง Code ตามด้านล่างจะเป็นการนำ I3:I17 ไปตรวจสอบกับ C3:D7

การเรียงตัวอักษรในเซลล์

สำหรับการเรียงตัวอักษรไม่ว่าจะเรียงไปทางบรรทัดหรือทางคอลัมน์ก็สามารถทำได้ด้วยฟังก์ชั่นการ Sort ตามปกติ แต่หากต้องการเรียงค่าในเซลล์ซึ่งมีการคีย์ข้อมูลโดยคั่นด้วยเครื่องหมายต่าง ๆ แล้วต้องการจะให้เรียงจากน้อยไปหามาก หรือจากมากไปหาน้อยนั้น เราไม่สามารถที่จะใช้ฟังก์ชั่นการ Sort ตามปกติที่โปรแกรมมีมาให้

การ Resize Comment พร้อมกันทุก Sheet

กรณีที่มีปัญหากล่องความเห็นหรือกล่อง Comment จำนวนมากมีขนาดไม่พอดีกับข้อความ เช่นเล็กไปหรือใหญ่ไป หากต้องจัดการด้วยมือเพื่อให้พอดีกับข้อความแล้วจะทำเสียเวลาไปมากมายครับ จากปัญหาดังกล่าว เราสามารถใช้ Code VBA ตามด้านล่าง

การนำข้อมูลมาเชื่อมต่อกันโดยดูตามสี

ใน Microsoft Excel ไม่มีฟังก์ชั่นสำหรับการ List รายการโดยดูสีที่เข้าเงื่อนไข หากจะทำเช่นนั้นต้องอาศัย Add-ins เช่น Morefunc (Support Excel 2007 ลงไป) หรือ VBA เข้ามาจัดการ และเนื่องจากว่าการใช้ Morefunc ไม่ Support กับ Excel ทุกรุ่น