บทความ

กำลังแสดงโพสต์ที่มีป้ายกำกับ excel vba

การห้ามย้ายเซลล์ (Drag) เฉพาะไฟล์ที่กำลังใช้งาน ของ Excel

รูปภาพ
ปัญหา ปกติเมื่อมีการเรียกใช้งาน Application.CellDragAndDrop = False จะทำให้ ไฟล์ของ Excel ทุกไฟล์ หรือ ทุก Workbook ที่เปิดใช้งาน ไม่สามารถ ลากเซลลไปวางไว้ที่ไหนได้ ถ้าต้องการห้ามเฉพาะไฟล์ หรือ Workbook ที่กำลังใช้งาน หรือ Active Workbook เท่านั้น จะทำอย่างไร หลักการ คำสั่งดังกล่าว เป็นระดับ Application จึงมีผลต่อทุกไฟล์ที่เปิด ถ้าต้องการบังคับเฉพาะไฟล์ หรือเฉพาะ Workbook จึงต้องมีวิธีการ กำหนดให้บังคับเฉพาะชื่อไฟล์ที่ระบุเท่านั้น วิธีการ เปิดไฟล์ใหม่ บันทึกเป็นไฟล์ xlsm โดยใช้ชื่อ noDrag เปิดหน้าจอเขียนโค้ด (Alt + F11) สร้างโมดูลใหม่ โดยไปที่ Insert > Module Excel จะตั้งชื่อให้เป็น Module1 ให้คัดลอกโค้ดนี้ไปวาง Dim X As New Class1 Sub InitializeApp() '   Called by Workbook_Open     Set X.App = Application End Sub สร้าง Class Module ใหม่ โดยไปที่ Insert > Class Module Excel จะตั้งชื่อว่า Class1 ให้ใช้ชื่อนี้ จะได้ไม่ต้องไปเปลี่ยนในโค้ด คัดลอกโค้ดต่อไปนี้ ลงใน Class1 Public WithEvents App As Application Private Sub App_WorkbookActivate(ByVal Wb As Workbook) 

ส่งเมลด้วย VBA ใน Excel ผ่าน Outlook

รูปภาพ
สมมุติว่า ใน Sheet ชื่อ users มีอีเมล์ ตั้งแต่เซลล์ B6:B20 และต้องการส่งเมล ไปยังอีเมลเหล่านั้น โดยใช้ Outlook จะทำอย่างไร หลักการ ก่อนอื่น ต้องทำการ Config โปรแกรม Outlook ให้สามารถใช้งานได้ก่อน โดยกำหนดว่าจะใช้ Serve ใดเป็นตัวส่งเมล์ จากนั้นจึง เปิด Excel ทำการอ้างอิงไปที่ Microsoft Outlook Object Library แล้วเขียนโค้ดส่งเมล์ และแนบกับปุ่ม เมื่อคลิกปุ่ม จะทำการส่งเมลทั้งหมดที่อยู่ในเซลล์ B6:B20 วิธีการ เปิด Excel 2010 และเรียกเมนู ผู้พัฒนา โดยไปที่ แฟ้ม > ตัวเลือก > กำหนด Ribbon เอง และเลือก ผู้พัฒนา อ้างอิง Outlook Object Library ให้เปิดหน้าจอเขียนโค้ด (กด Alt+F11) (หรือ นักพัฒนา > แสดงโค้ด ) แล้วไปที่ Tools > References และเลือก Library ที่ต้องการ สร้างโมดุลใหม่ โดยไปที่ เมนู Insert > Module ดับเบิ้ลคลิกที่ Module1 และสร้าง Procedure การเรียกใช้งาน Outlook ดังนี้ Sub sendMyMail(addrss As String)     Dim OutApp As Object     Dim OutMail As Object     Set OutApp = CreateObject("Outlook.Application")     Set OutMail = OutApp.CreateItem(0)

การหาค่า Mean และ S.D. ในบริเวณที่เลือก ด้วย Excel VBA

รูปภาพ
การหาค่า Mean และ S.D. ด้วย VBA คำสั่ง ให้หาค่า Mean และ S.D. ของข้อมูลในบริเวณที่เลือก ในแผ่นงานข้างล่างนี้ หลักการ ใช้ Range เพื่อเลือกบริเวณที่ต้องการ ใช้คำสั่ง average และ stdev เพื่อคำนวณค่าที่้ต้องการ

การเลือกเซลล์ ด้วย Excel VBA

รูปภาพ
การเลือกเซลล์ ด้วย VBA ถ้ารู้ว่าจะเลือกเซลล์อะไร หรือ เซลล์อะไรถึงอะไร ก็ไม่ยาก ใช้ Range มาช่วย ดังนี้ ต้องการเลือกเซลล์ B3 Sub example1()     Sheets("Sheet1").Range("B3").Select  End Sub หรือ Sub example2()     Sheets("Sheet1").Cells(3, 2).Select End Sub หมายเหตุ Sheets("Sheet1").Cells(3, 2) คือ เซลล์แถวที่ 3 คอลัมน์ที่ 2 ของ Worksheet1 ต้องการเลือกเซลล์ A2:B8 Sub example3()     Sheets("Sheet1").Range("A2", "B8").Select '    หรือ '    Sheets("Sheet1").Range(Cells(2, 1), Cells(8, 2)).Select End Sub แต่ถ้าต้องการเลือกจำนวนเซลล์โดยขึ้นอยู่กับตัวแปร ว่าจะเลือกกี่เซลล์ลงมา อย่างนี้ ต้องใช้อีกแบบหนึ่ง เช่น

การใช้ if ตรวจสอบหลายเงื่อนไข ใน Excel

รูปภาพ
การใช้ฟังก์ชัน If ของ Excel ตรวจสอบหลายเงื่อนไข  มีรูปแบบ ดังนี้            If( condition, value_if_true, value_if_false ) เราสามารถตรวจสอบหลายเงื่อนไข โดยการเพิ่ม if เข้าในส่วนที่ไม่เป็นไปตามเงื่อนไข เช่น             If( condition, value_if_true, If( condition, value_if_true, value_if_false ) ) ตัวอย่าง             =IF(MID(A1,1,3)="นาย","นาย",IF(MID(A1,1,3)="นาง","นาง","")) ถ้ามีการตรวจสอบหลายครั้ง การใช้ฟังก์ชัน if จะไม่ค่อยสะดวก เพราะตรวจสอบยากมาก เนื่องจากข้อความที่เขียนจะยาวมาก ต้องตรวจสอบหลายครั้งกว่าที่จะทำได้ถูกต้อง ทางออกอย่างหนึ่งที่ง่ายกว่า คือการใช้ VBA ช่วย โดยสร้างฟังก์ชันขึ้นใช้เอง และใช้ if หรือ Select caseตรวจสอบเงื่อนไข จะทำให้สะดวกกว่า เช่น     if (เงื่อนไขที่ 1) then         ..............................     elseif (เงื่อนไขที่ 2) then         ..............................     elseif (เงื่อนไขที่ 3) then         ...............................     elseif (เงื่อนไขที่ 4) then         ............