วันเสาร์ที่ 9 กุมภาพันธ์ พ.ศ. 2556

การสร้างปุ่มและการ Assign Macro ให้กับปุ่ม

เพื่อให้สะดวกในการใช้ Macro ที่สร้างไว้ เราสามารถรสร้างปุ่มให้แล้วทำการ Assign Macro ให้กับปุ่ม เมื่อจะเรียกใช้ Macro เราแค่คลิกที่ปุ่มนั้น Macro ก็จะทำงานทันที

ตัวอย่างต่อไปนี้เป็นการสร้างปุ่มด้วย Object ใด ๆ แล้ว Assign Macro ให้กับปุ่มและการเรียกใช้ Macro

 

1.  คลิกเมนู Insert > Illustrations > Shapes  > เลือก Rounded Rectangle

image

 

2. นำเมาส์ไปวาดบนพื้นที่ที่ต้องการ

image

 

3. คลิกขวาบนปุ่มแล้วเลือก Edit Text > เขียนชื่อให้กับปุ่มแล้วคลิกเซลล์ใด ๆ เลือกยกเลิกการกรอก Text

image

 

4. คลิกขวาที่ปุ่มอีกครั้งแล้วเลือก Assign Macro…

image

 

5. เมื่อเรียกใช้ Macro ให้คลิกที่ปุ่ม สำหรับปุ่มใด ๆ ที่มีการ Assign Macro แล้วสังเกตได้ว่าเมาส์จะเป็นรูปมือ

image

การเริ่มบันทึก Macro

การบันทึก Macro เป็นการบันทึกการทำงานของโปรแกรมเพื่อลดการทำงานด้วย Manual ซ้ำ ๆ ซึ่งช่วยประหยุัดเวลาในการทำงานได้มาก ตัวอย่างต่อไปนี้เป็นการบันทึก Macro สำหรับการกำหนด Format แบบ % และกำหนดตัวอักษรให้เป็นตัวหนาให้กับเซลล์ A1

 

1. คลิกแถบ Developer > คลิกปุ่มบันทึก Macro ซึ่งมีอยู่ 2 ตำแหน่งตามภาพ

image

 

2. โปรแกรมจะตั้งชื่อ Macro ให้เป็น Macro1 หรือ MacroN ให้โดยอัตโนมัติ โดย N คือลำดับของ Macro เราสามารถเปลี่ยนเป็นชื่อใด ๆ ตามต้องการ

กำหนด Shortcut key สำหรับความสะดวกในการเรียกใช้ เช่น คีย์ M การเรียกใช้จะกดแป้น Ctrl+M ข้อควรระวังคือไม่ควรตั้งให้ซ้ำกับ Shortcut ของ Excel เพราะจะทำให้ถูกแทนด้วย Macro ที่เราบันทึก

กำหนดตำแหน่งทีเก็บ Macro ซึ่งเราสามารถเก็บใน

  1. This Workbook
  2. New Workbook
  3. Personal Macro Workbook

เขียนคำอธิบายเพื่อระบุหน้าที่ของ Macro ที่กำลังบันทึก

SNAGHTML4758176

 

3. ทำการกำหนด Format ให้เป็น % และตัวอักษรเป็นตัวหนา

image

 

4. หยุกการบันทึก Macro โดยการคลิกปุ่ม Stop ซึ่งมี 2 ตำแหน่งตามภาพด้านล่าง

image

 

5. การเรียกดูหรือแก้ไข Macro ที่บันทึกโดยคลิกปุ่ม Macros

image

 

6. คลิก Macro ที่ต้องการดู Code > คลิกปุ่ม Edit

SNAGHTML47a5cc0

 

7. โปรแกรมจะเปิดหน้าต่าง VBE (Visual Basic Editor) สำหรับการเรียกดู การแก้ไข การเขียน Code VBA ขึ้นมาให้

image

 

8. การกลับไปยัง Excel ให้คลิกที่เมนู File > Close and Return to Microsoft Excel หรือกดแป้น Alt+Q

image

การเพิ่ม Developer Tab

การใช้งาน Macro ควรเพิ่มเมนู Developer เพื่อความสะดวกเข้ามาก่อนตามภาพด้านล่างครับ

 

1. คลิกปุ่ม Dropdown ตรง Customize Quick Access Toolbar > More Commands…

image

 

2. คลิก Tab Customize Ribon > ทำเครื่องหมายที่ Developer > OK

image

 

3. แถบ Developer จะเห็นว่ามีเครื่องมือสำหรับการบันทึก Macro และการเขียน VBA รวมทั้งการสร้าง Control ต่าง ๆ บน Worksheet เพื่อสะดวกในการใช้งาน

image

วันอาทิตย์ที่ 6 มกราคม พ.ศ. 2556

การ Loop ในช่วงเซลล์

เมื่อใช้ Visual Basic มีบ่อยครั้งที่ต้องวนรอบ (Loop) เพื่อเข้าถึงแต่ละเซลล์ในบล็อกของช่วงเซลล์ ซึ่งการทำเช่นนี้ คุณสามารถรวมคำสั่งวน Loop เพื่อดำเนินการกับแต่ละเซลล์

วิธีการวนซ้ำในช่วงเซลล์ที่ต้องการวิธีหนึ่งคือการใช้ For…Next กับ Cells Property การใช้ Cells Property สามารถทดแทนนับวนจำนวนของเซลล์ (หรืออื่น ๆ ตัวแปร หรือนิพจน์) ในตัวอย่างต่อไปนี้ ตัวแปร Counter ถูกแทนด้วยเลขแถว เป็นการวนซ้ำในช่วงเซลล์ C1:C20 โดยตั้งค่าเป็น 0 เมื่อเซลล์ใดมีค่าน้อยกว่า 0.01

 

Sub RoundToZero1()
For Counter = 1 To 20
Set curCell = Worksheets("Sheet1").Cells(Counter, 3)
If Abs(curCell.Value) < 0.01 Then curCell.Value = 0
Next Counter
End Sub


วิธีที่ง่ายอีกวิธีหนึ่งคือการวนซ้ำในช่วงเซลล์โดยการใช้ For Each…Next กับ Collection ของเซลล์ใน Range Property โดย Visual Basic ตั้งค่า Object สำหรับเซลล์ถัดไปให้ทำงานแต่ละครั้งการวนรอบ ขั้นตอนต่อไปนี้เป็นการวนรอบช่วงเซลล์ A1:D10 โดยตั้งค่าเป็น 0 เมื่อเซลล์ใดมีค่าน้อยกว่า 0.01


Sub RoundToZero2()
For Each c In Worksheets("Sheet1").Range("A1:D10").Cells
If Abs(c.Value) < 0.01 Then c.Value = 0
Next
End Sub


ถ้าคุณไม่ทราบขอบเขตของช่วงคุณต้องการวนซ้ำ คุณสามารถใช้ CurrentRegion Property เพื่อระบุช่วงที่ล้อมรอบเซลล์ที่ใช้งาน ตัวอย่างเช่น Precedure ต่อไปนี้ เมื่อเรียกใช้จากแผ่นงาน เกิดการวนซ้ำในช่วงที่ล้อมรอบเซลล์ที่กำลังใช้งาน โดยตั้งค่าเป็น 0 เมื่อเซลล์ใดมีค่าน้อยกว่า 0.01


Sub RoundToZero3()
For Each c In ActiveCell.CurrentRegion.Cells
If Abs(c.Value) < 0.01 Then c.Value = 0
Next
End Sub

การอ้างอิงถึงเซลล์หรือช่วงเซลล์ในลักษณะ A1

คุณสามารถอ้างถึงเซลล์หรือช่วงของเซลล์ในลักษณะอ้างอิง A1 โดยใช้ Propety Range สำหรับ subroutine ดังต่อไปนี้เป็นการเปลี่ยนแปลงรูปแบบของช่วงเซลล์ A1:D5 เป็นตัวหนา

Sub FormatRange()
    Workbooks("Book1").Sheets("Sheet1").Range("A1:D5") _
        .Font.Bold = True
End Sub

ตารางต่อไปนี้แสดงการอ้างอิงในลักษณะ A1 โดยใช้ Property Range


การอ้างอิง


ความหมาย

Range("A1")เซลล์ A1
Range("A1:B5")เซลล์ A1 ถึง B5
Range("C5:D9,G9:H16")การเลือกหลายพืันที่
Range("A:A")คอลัมน์ A
Range("1:1")แถวที่ 1
Range("A:C")คอลัมน์ A ถึง C
Range("1:5")แถวที่ 1 ถึง 5
Range("1:1,3:3,8:8")แถบที่ 1, 3, และ 8
Range("A:A,C:C,F:F")คอลัมน์ A, C, และ F


วันเสาร์ที่ 5 มกราคม พ.ศ. 2556

การ Save Documents ไปเป็น Web Pages

ใน Microsoft Excel คุณสามารถบันทึกสมุดงาน แผ่นงาน แผนภูมิ ช่วงข้อมูล ตารางPivotTable รายงาน พื้นที่พิมพ์ หรือช่วงตัวกรองอัตโนมัติเป็นเว็บเพจ นอกจากนี้คุณยังสามารถแก้ไขแฟ้ม HTML โดยตรงใน Excel ได้อีกด้วย

การ Save Documents ไปเป็น Web Pages

การบันทึกเอกสารเป็นเว็บเพจคือ กระบวนการของการสร้าง และบันทึกเป็นแฟ้ม HTML และแฟ้มสนับสนุนต่าง ๆ การทำเช่นนี้ ใช้วิธี SaveAs ดังที่แสดงในตัวอย่างต่อไป ซึ่งจะบันทึกสมุดงานที่ใช้เป็น C:\Reports\myfile.htm

Sub SaveAsWebPages()
ActiveWorkbook.SaveAs _
Filename:="C:\Reports\myfile.htm", _
FileFormat:=xlHtml
End Sub


การกำหนดค่า Webpage


คุณสามารถกำหนดการแสดงเนื้อหา การสนับสนุนเบราว์เซอร์ แก้ไขการสนับสนุน รูปแบบกราฟิก ความละเอียดหน้าจอ ผังของเว็บ และการเข้ารหัสของเอกสาร HTML โดยการตั้งค่าคุณสมบัติของ DefaultWebOptions และ WebOptions ซึ่ง DefaultWebOptions ประกอบด้วยคุณสมบัติระดับโปรแกรมประยุกต์ การตั้งค่าเหล่านี้จะถูกแทนโดยการตั้งค่าคุณสมบัติระดับสมุดงานที่มีชื่อเดียวกัน (สิ่งเหล่านี้มีอยู่ใน WebOptions)

หลังจากตั้งค่าแอตทริบิวต์ คุณสามารถใช้วิธีเผยแพร่บันทึกแผ่นสมุดงาน งาน แผนภูมิ ช่วงข้อมูล ตาราง PivitTable รายงาน พื้นที่การพิมพ์ หรือช่วงตัวกรองอัตโนมัติกับเว็บเพจ ตัวอย่างต่อไปนี้ตั้งค่าคุณสมบัติระดับโปรแกรมประยุกต์ต่าง ๆ แล้วตั้งค่าคุณสมบัติ AllowPNG ของสมุดงานที่ใช้แทนค่าเริ่มต้น ตัวอย่างการบันทึกช่วงข้อมูลเป็น "C:\Reports\1998_Q1.htm"

Sub CustomWebpage()
With Application.DefaultWebOptions
.RelyOnVML = True
.AllowPNG = True
.PixelsPerInch = 96
End With
With ActiveWorkbook
.WebOptions.AllowPNG = False
With .PublishObjects(1)
.Filename = "C:\Reports\1998_Q1.htm"
.Publish
End With
End With
End Sub

นอกจากนี้คุณยังสามารถบันทึกแฟ้มไปยังเว็บเซิร์ฟเวอร์ ตัวอย่างต่อไปนี้จะบันทึกในช่วงเว็บเซิร์ฟเวอร์ http://example.homepage.com/annualreport.htm ซึ่งเป็น URL บนหน้าเว็บ


Sub SaveRangeToServer()
With ActiveWorkbook
With .WebOptions
.RelyOnVML = True
.PixelsPerInch = 96
End With
With .PublishObjects(1)
.Filename = _
"http://example.homepage.com/annualreport.htm"
.Publish
End With
End With
End Sub


การเปิด HTML ใน Excel


การแก้ไขเอกสาร HTML ใน Excel ก่อนที่จะเปิดเอกสาร โดยใช้ Open Method ตัวอย่างต่อไปนี้เปิดแฟ้ม "C:\Reports\1997_Q4.htm" เพื่อแก้ไข

Sub OpenWP_Edit()
Workbooks.Open Filename:="C:\Reports\1997_Q4.htm"
End Sub

หลังจากเปิดแฟ้มคุณสามารถกำหนดการแสดงเนื้อหา การสนับสนุนเบราว์เซอร์ แก้ไขการสนับสนุน รูปแบบกราฟิก ความละเอียดหน้าจอ ผังของเว็บ และการเข้ารหัสของเอกสาร HTML โดยการตั้งค่าคุณสมบัติของ DefaultWebOptions และ WebOptions ได้

อ้างถึงแผ่นงานโดยใช้ Index Number (หมายเลขดัชนี)

หมายเลขดัชนีเป็นตัวเลขตามลำดับที่กำหนดแผ่นงาน ตามตำแหน่งของแท็บของแผ่นงาน (นับจากทางซ้ายไปขวา) ระหว่างแผ่นงานชนิดเดียวกัน ขั้นตอนต่อไปนี้ใช้คุณสมบัติแผ่นงาน ซึ่งเป็นการเรียกใช้แผ่นงานลำดับที่ 1 ในสมุดงานที่กำลังทำงาน

Sub FirstOne()
Worksheets(1).Activate
End Sub

ถ้าคุณต้องการทำงานกับทุกชนิดของแผ่นงาน (แผ่นงาน แผนภูมิ โมดูล และแผ่นกล่องโต้ตอบ) ให้ใช้คุณสมบัติหมายเลขดัชนีแผ่นงาน ขั้นตอนต่อไปนี้เรียกใช้แผ่นงาน 4 ในสมุดงานที่กำลังทำงาน


Sub FourthOne()
Sheets(4).Activate
End Sub

หมายเหตุ
ลำดับดัชนีสามารถเปลี่ยนถ้าคุณย้าย เพิ่ม หรือลบแผ่นงาน