คราวนี้ผมมีประสบการณ์ในการสร้างปุ่มกดแบบไม่มีปุ่มไว้ใน Worksheet (Create button in worksheet) ครับหลายๆท่านที่คุ้นเคยกับการเขียน VBA ก็จะมีการสร้างปุ่มกด (Button) ไว้ใช้กับงานกันอยู่แล้ว ทั้งการใช้งานบน Userform และการใช้งานบน Worksheet ผมเองก็เช่นกันครับ แต่บางทีก็ยังไม่ตอบโจทย์ตัวเองได้สักเท่าไร ค้นไปค้นมาก็มาพบแนวทางนี้เข้า ได้นำมาปรับปรุงดัดแปลงใช้กับงานของตัวเอง นับว่าถูกใจเป็นอย่างยิ่งครับ ก็เลยจะเอามาเขียนไว้เป็นแนวทางสำหรับผู้ที่สนใจครับปุ่มที่ผมใช้นี้ จริงๆแล้วไม่ใช่ปุ่ม แต่เป็นการดัดแปลงเอา Hyperlink มาใช้งานครับ หน้าที่ของ Hyperlink ก็คือการคลิกแล้วพาไปที่อื่น เช่น ไปที่ Worksheet ที่กำหนดไว้ หรือไปเปิดเว็บตาม URL ที่กำหนดไว้ แต่อีกหนึ่งในคุณสมบัติของ Hyperlink ก็คือ สามารถรันคำสั่ง VBA ได้ด้วย โดยเมื่อคลิกที่ Hyperlink แล้วไม่ต้องพาไปที่ไหน ใช้คุณสมบัติการรันคำสั่งทำงานไปอย่างเดียว พอเราระบายสีใน Cell ใดๆให้มีหน้าตาเหมือนปุ่มกด งานในภาพรวมก็คือการคลิกที่ปุ่มกดให้ทำงานนั่นเองครับรูปข้างบนเป็นการออกแบบงานที่ผมมักใช้เป็นประจำครับ คือจะปรับความกว้างของคอลัมน์ทั้งหมดเท่ากับ 2 (ในสายตาผมมองว่าเป็นรูปแบบ หรือ Format ของงานได้แบบหนึ่ง เรียกว่าเป็นเอกลักษณ์ของผมในที่ทำงานเลย หน้าตาแบบนี้ น้องๆรู้ได้ทันทีว่าเป็นงานที่สร้างโดยผมแน่ๆ) จากนั้นจะออกแบบปุ่มกดต่างๆ ซึ่งจะใช้วิธี Merge cell สัก 3 หรือ 4 Cell สำหรับปุ่มทั่วไป แต่ถ้าต้องการปุ่มยาวๆก็สามารถ Merge cell ได้เท่าที่ต้องการ จากนั้นก็ปรับสีให้มีการไล่เฉดสีหรือมีเงาคล้ายๆปุ่มกด เมื่อเอา Mouse ไปชี้ ก็จะเห็นเป็นรูปนิ้วเหมือนการชี้ที่ปุ่ม ชื่อปุ่มที่เห็นนี้ ผมก็เอาไปเป็นชื่อคำสั่งไปในตัวเลยรูปข้างบนนี้เป็นหน้าตางานจริงอันหนึ่งของผมเอง ซึ่งอันนี้เอามาให้ดูเฉยๆนะ จะเห็น เมนูส่วนตัว หรือ Custom menu ที่เขียนไว้ในบทความก่อนหน้า กับปุ่มกด(ที่ไม่ใช่ปุ่มกด)ต่างๆ รวมไปถึงส่วนของ Fields ต่างๆที่จะใช้กรอกข้อมูล ซึ่งจะนำมาเล่าสู่กันฟังในครั้งต่อๆไป ส่วนที่จะเขียนแนะนำกันในบทความนี้ ผมจะสร้างขึ้นมาใหม่เลย ไม่เกี่ยวกับไฟล์ที่ผมใช้ทำงานนะครับขั้นตอนต่างๆพอจะแบ่งเป็นขั้นตอนได้ดังนี้ครับเตรียมไฟล์งาน ให้สามารถคลิก Hyperlink แล้วเรียกใช้คำสั่งต่างๆได้เตรียมคำสั่งที่จะใช้งานแต่ละงานเมื่อผมคลิกที่ปุ่มสร้าง เมนูส่วนตัว หรือ Custom menu เพื่อเอาไว้สั่งสร้างปุ่มเตรียมคำสั่งสร้างปุ่ม ซึ่งก็คือคำสั่งอัตโนมัติไว้ระบายสี Cell เนื่องจากมีขั้นตอนยุ่งยากอยู่พอสมควร เขียนเป็นคำสั่งไว้รันจะสะดวกกว่าครับสร้างปุ่มใน Worksheetทีนี้ก็มาดูรายละเอียดกันครับเตรียมไฟล์งาน1.1 เปิด workbook ที่เป็นไฟล์นามสกุล .xlsb ขึ้นมา1.2 กดปุ่ม Alt+F11 เพื่อเข้างานเขียน VBA1.3 ที่กรอบด้านซ้ายมือ Double Click ที่ Thisworkbook จะได้หน้าจอสำหรับเขียนคำสั่ง การเขียนคำสั่งที่หน้าจอนี้ จะมีผลกับทุกๆ Sheet ในไฟล์นี้เลยครับ1.4 เหลือบมองขึ้นไปนิดนึง ให้คลิกที่คำว่า General แล้วให้เลือกที่คำว่า Workbookจะเห็นคำสั่งเกิดขึ้นมา 1 คำสั่ง คือ Private Sub Workbook_Open() และมี End Sub เพื่อรอให้เราเขียนคำสั่งต่างๆลงไป แต่ผมยังจะไม่เขียนคำสั่งนี้1.5 เหลือบตาไปทางขวา แล้วคลิกที่คำว่า Open หน้าจอจะแสดงคำสั่งต่างๆมากมายเลย ให้เลื่อนสายตาค้นหาและคลิกเลือกที่คำสั่ง SheetFollowHyperlinkจะเห็นชุดคำสั่งตามที่เราเลือกขึ้นมารออีก 1 ชุดครับ1.6 เขียนคำสั่งเข้าไปในกลุ่มของ Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) ตามรูปข้างล่างนี้ครับดูจากหน้าจอที่เขียนโปรแกรมอาจจะไม่ชัด ผมเอามาวางให้ดูอีกครั้งครับเตรียมคำสั่งที่จะใช้งาน2.1 ที่เมนูด้านบน กดที่ Insert เลือก Module จะได้หน้าจอสำหรับเขียนโค้ดออกมาต่างหาก ชื่อว่า Module1 ซึ่งหน้าจอเหมือนๆกับข้อ 1. แต่คนละอันกันนะครับ ผมจับภาพมาให้ดูตอนที่เขียนคำสั่งเสร็จแล้วนะครับผมเอา Select Case มาใช้แทน If ก็เพราะเคยผ่านตาว่า If จำกัดจำนวนชั้นที่จะซ้อนกันได้ อันนี้ไม่แน่ใจนัก ก็เลยชอบใช้ Select Case มากกว่า จากตัวอย่าง ผมจะมีปุ่มกดอยู่ 5 ปุ่ม มีชื่อปุ่มเป็น Exit, Find, Report, Save และ Clear เมื่อเราคลิกที่ปุ่มไหน คำสั่งที่ตรงกันตามแต่ละ Case ก็จะทำงาน ง่ายๆแค่นี้เองครับ2.2 ตัวอย่างคำสั่งที่จะรันเมื่อเราคลิกที่ปุ่มครับ ผมตั้งชื่อให้สอดคล้องกับชื่อปุ่มเอาไว้ด้วย เวลาผิดพลาดหรือจะเพิ่มเติมอะไร จะได้หาได้ง่ายๆครับ เขียนต่อมาจากข้อ 2.1 เลยครับสามารถทดลองสั่งรันในแต่ละคำสั่งดูได้ครับสร้าง เมนูส่วนตัว หรือ Custom menu เพื่อเอาไว้สั่งสร้างปุ่มเมนูนี้ผมใช้ชื่อว่า "CreateButton" นะครับ วิธีการก็กด Link ไปอ่านกันได้เลย โดยผมใช้ชื่อเมนูเป็นอันเดียวกันกับชื่อคำสั่งเลย โดยไปที่เมนูด้านบน กดที่ Insert เลือก Module จะได้หน้าจอสำหรับเขียนโค้ดขึ้นมาใหม่ คราวนี้หน้าจอจะชื่อว่า Module2 ผมเขียนโค้ดลงไปตามนี้ครับเตรียมคำสั่งสร้างปุ่มผมเขียนคำสั่งเรียงต่อลงมาจากข้อ 3 เลยครับ แต่ที่มีหลายๆภาพ เพราะต้องจับภาพหน้าจอหลายครั้งหน่อยสร้างปุ่มใน Worksheetมาถึงเวลาสร้างปุ่มใน Worksheet กันแล้ว อ้อ...รันคำสั่ง CreateCustomMenu เตรียมไว้ก่อนนะครับ5.1 ผมปรับความกว้างของคอลัมน์ให้เป็น 2 ทั้งหน้าเลย (เอกลักษณ์ส่วนตัวของผม)5.2 ผมจะสร้างปุ่มแรกคือปุ่ม Exit โดยพิมพ์ชื่อปุ่มคือ Exit ไว้ที่ F3 5.3 ผมกะคร่าวๆว่า แต่ละปุ่มที่ผมวางแผนไว้ ไม่น่าจะกว้างเกิน 3 คอลัมน์ ผมจึงกดเลือกพื้นที่ F3 ถึง G3 เอาไว้ก่อน5.4 เมื่อเลือกพื้นที่แล้ว ก็ไปคลิกที่เมนู Add-ins เลือก CreateButton เป็นอันว่าได้ปุ่มแรกกันแล้ว5.5 สร้างปุ่มที่ 2 กันต่อ พิมพ์ Find ที่ I3 แล้วเลือกพื้นที่ I3 ถึง K3 จากนั้นสั่ง CreateButton จากเมนู ได้ 2 ปุ่มแล้วครับ5.6 ผมก็สร้างเพิ่มอีกจนครบ 5 ปุ่มตามที่ออกแบบไว้ครับ แต่ดูแล้วปุ่มออกจะเตี้ยๆไปหน่อย เลยได้เพิ่มความสูงของ Row ให้เป็น 18 ก็ดูเข้าท่าเข้าทางขึ้นอีกหน่อยครับเรียบร้อยแล้วครับ สร้างปุ่มกดที่ไม่ใช่ปุ่มเอาไว้เรียกใช้งานได้แล้ว มีข้อสังเกตอีกนิดก็คือ ที่ผมต้องใส่ Space ไว้หน้าและหลังชื่อปุ่มนั้น เพราะว่า Hyperlink จะกดได้เฉพาะกับตัวอักษรเท่านั้น ในเมื่อปุ่มของผมกว้างกว่าตัวอักษรที่มี ยกตัวอย่างที่ปุ่ม Exit นะครับ ถ้าไม่เพิ่ม Space บนปุ่มที่เป็นด้านหน้าตัว E กับด้านหลังตัว T จะกดไม่ได้ ซึ่งถือว่าผิดวิสัยของปุ่มกด การเพิ่ม Space เข้าไป ก็เป็นการ "เพิ่มตัวอักษรที่มองไม่เห็น" เข้าไป ทำให้กดได้เหมือนกดปุ่มจริงๆจะเห็นว่าบทความนี้เหมือนจะยาวมาก แต่พอเตรียมไฟล์และสร้างคำสั่งไว้เรียบร้อยแล้ว การสร้างปุ่มก็มีเพียงพิมพ์ชื่อปุ่ม, ระบายพื้นที่ตามความกว้างที่ต้องการ แล้วคลิกที่เมนู CreateButton เท่านั้นเองเป็นเสร็จงานทีนี้ก็แล้วแต่ความต้องการ ว่าจะให้ปุ่มในงานของเราเป็นสีอะไร จะไล่เฉดสีหรือไล่แสงไปทางไหน ชื่อปุ่มจะเล่นสีอย่างไร พลิกแพลงได้ทั้งหมด แต่อย่าลืมครับ ผมเองนี่ละ สูงสุดคืนสู่สามัญ สีเรียบๆอย่างนี้ละครับ ดูมาตรฐานและน่าเชื่อถือกว่าเป็นไหนๆ...สวัสดีครับผมภาพประกอบ : โดยผู้เขียนอัปเดตความรู้ใหม่ ๆ อีกมากมาย โหลดเลยที่ App TrueID ฟรี !