วันอาทิตย์ที่ 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

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

การเปิดสมุดงาน

เมื่อคุณเปิดสมุดงานที่ใช้วิธีการเปิด สมุดงานนั้นจะกลายเป็นสมาชิกของคอลเลกชันของสมุดงาน ขั้นตอนต่อไปเป็นการเปิดสมุดงานชื่อ MyBook.xls อยู่ในโฟลเดอร์ชื่อ MyFolder บนไดรฟ์ c

Sub OpenUp()
Workbooks.Open("C:\MyFolder\MyBook.xls")
End Sub




การสร้างสมุดงานใหม่

การสร้างสมุดงานใหม่ใน Visual Basic ใช้วิธีการเพิ่ม ขั้นตอนต่อไปนี้สร้างสมุดงานใหม่ Microsoft Excel โดยอัตโนมัติชื่อสมุดงาน BookN โดยที่ N คือ หมายเลขที่พร้อมใช้งานถัดไป สมุดงานใหม่กลายเป็นสมุดงานที่กำลังทำงาน

Sub AddOne()
Workbooks.Add
End Sub


วิธีการสร้างสมุดงานใหม่ที่ดีกว่าคือการ กำหนดให้ตัวแปรวัตถุ ในตัวอย่างต่อไปนี้ จะกำหนดตัวแปรให้กับวัตถุสมุดงานและวัตถุสมุดงานจะถูกส่งค่ากลับมา โดยวิธีเพิ่มถูกกำหนดให้กับตัวแปรวัตถุ newBook ถัดไป พร้อมกำหนดคุณสมบัติต่าง ๆ ของ newBook นอกจากนี้คุณสามารถควบคุมโดยใช้ตัวแปรวัตถุสมุดงานใหม่ได้อย่างง่ายดาย


Sub AddNew()
Set NewBook = Workbooks.Add
With NewBook
.Title = "All Sales"
.Subject = "Sales"
.SaveAs Filename:="Allsales.xls"
End With
End Sub