Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore ใบความรู้ หน่วยที่ 3

ใบความรู้ หน่วยที่ 3

Published by sawan_1966, 2019-06-04 22:37:45

Description: การเขียนโปรแกรมภาษา Visual Basic เบื้องต้น

Search

Read the Text Version

หน่วยท่ี 3

3.2 ทำควำมรจู้ ักกบั ตัวแปรของ VB กำรประกำศตัวแปร (Declarations) ก่อนท่ีคุณจะใช้งานตวั แปร หรือค่าคงทีท่ กุ ครัง้ คุณควรทีจ่ ะประกาศตวั แปร (declare) ก่อน เพ่ือบอกให้ VB รู้ว่า ตัวแปรช่อื นี้ คุณต้องการใช้งาน และตวั แปรดังกลา่ ว ใชแ้ ทนขอ้ มลู ชนดิ ใด เหตุทีผ่ ู้เขยี นใชค้ าว่า ควรทีจ่ ะ เนอ่ื งจากวา่ VB จะอนุญาตให้คุณใช้งานตัวแปรได้ โดยทค่ี ุณไม่จาเป็นต้องประกาศตวั แปร แตต่ ัวแปรท่ีคณุ ไดม้ า มนั จะกิน ทรัพยากรระบบ มากเกนิ ความจาเป็น รวมถงึ ประมวลผลไดช้ า้ อกี ด้วย เพราะจะเป็นตัวแปรท่ีสามารถแทนข้อมูลไดท้ ุก ชนดิ ซึ่ง VB เรยี กวา่ ตวั แปรชนดิ Variant คณุ อาจคิดว่า ตัวแปรชนดิ Variant กด็ ีอย่แู ล้ว ไมต่ อ้ งยงุ่ ยาก ในการ กาหนดรายละเอยี ดต่างๆ ให้วุ่นวาย แตโ่ ปรแกรมเมอรจ์ ะไม่นิยมใช้ และหลีกเล่ียงทจ่ี ะใช้งานตวั แปรชนดิ Variant อีก ดว้ ย จะใช้ในกรณีที่จาเป็นเท่านัน้ เนื่องจากวา่ มีผลเสยี มากกว่าผลดที ่คี ณุ จะไดร้ ับ เหตุผลท่ีสาคัญอีกประการหนง่ึ กค็ ือ ตวั แปรต่างๆ ทค่ี ุณนามาใชง้ านในโปรเจ็กต์ของคุณ ตัวคณุ เองยอ่ มรู้ดวี า่ จะใชต้ ัวแปรใดบา้ ง และจะให้ตวั แปรตวั ใด แทนข้อมูลชนิดไหน ซึ่งคณุ เองเปน็ ผู้กาหนดทง้ั หมด ดังนนั้ จงึ ไมม่ ีเหตผุ ลใด ท่ีคณุ จะใช้ตัวแปรชนิด Variant จาก เหตุผลขา้ งต้น คุณควรทจ่ี ะประกาศตวั แปรทุกครัง้ ก่อนท่ีจะนาไปใชง้ าน ใน VB มีรปู แบบการประกาศดังนี้ Dim varname As datatypes ความหมายของแตล่ ะส่วน มดี ังนี้ o Dim คอื คาสัง่ (statements) ท่บี อกให้ VB รู้ว่า คุณต้องการประกาศตวั แปร o varname คอื ชอื่ ของตัวแปร คุณสามารถตั้งช่ือตัวแปรได้อยา่ งอิสระ แตต่ ้องไมผ่ ดิ กฎการตัง้ ชอื่ ของ VB คุณ ควรจะต้ังชอื่ ตัวแปร ใหส้ ่ือกับขอ้ มลู ที่ตวั มนั เก็บอยู่ จะทาให้คุณอ่านโคด้ ได้งา่ ยข้ึน o As คอื คาสงวน (keywords) ที่บอกให้ VB รูว้ า่ คณุ ต้องการกาหนดให้ตัวแปรช่ือดังกล่าวแทนข้อมลู ชนดิ ใด o datatypes คือ ชนดิ ของข้อมลู ท่ี VB สนับสนุนอยู่ ซึ่งมีอยูห่ ลายชนิด เช่น ตัวเลขจานวนเตม็ (integer), ตวั อักษร (string) เปน็ ตน้ การประกาศตัวแปรใน VB สามารถแยกได้ 2 แบบคือ 1.การประกาศตวั แปรแบบ Implicit Declaration หมายถงึ VB ยอมใหค้ ุณใช้งานตวั แปรได้ โดยไม่ต้องมีการประกาศ ตัวแปร ชนิดของข้อมลู ที่ไดจ้ ะเปน็ แบบ Variant ซ่ึงไมค่ วรนามาใชง้ านดว้ ยเหตุผลขา้ งตน้ แตถ่ ้าคุณตอ้ งการใช้งานตวั แปรชนิดอนื่ ๆ โดยการประกาศแบบน้ี คุณสามารถใช้สญั ลกั ษณพ์ ิเศษที่ VB กาหนดไว้ เพื่อเปลี่ยนชนดิ ของข้อมูล เป็น ชนดิ อน่ื ๆ ได้ ใหด้ ูหัวข้อ ชนิดของขอ้ มลู เพิม่ เตมิ 2.การประการตวั แปรแบบ Explicit Declaration หมายถึง คุณจะต้องมีการประกาศตัวแปรก่อนการใชง้ านทุกคร้ัง แล้วจึงสามารถนาตัวแปรน้ันๆ ไปใชง้ านได้ การประกาศตัวแปรแบบ Explicit ให้คุณใส่คาส่งั Option Explicit ไวใ้ นสว่ นบนสุด ก่อนการสร้างโพรซีเดอร์ จะเป็น การบังคับให้คุณ ต้องประกาศตัวแปรกอ่ น ท่ีจะนาไปใชง้ านทุกครง้ั ถ้าคุณไม่ต้องการพิมพข์ ้อความดังกลา่ วทกุ คร้งั ให้ คุณเลือกเมนูTools/Option เลอื กหัวข้อ Require Variable Declaration VB จะใสข่ ้อความดงั กล่าว ใหค้ ุณโดย อัตโนมัตทิ ุกคร้ัง ดงั รูป

กำรตง้ั ชอ่ื คอนโทรลและออ๊ บเจ็กต์ตำมคำแนะนำของไมโครซอฟท์ เนอ่ื งจาก VB มีคอนโทรลต่างๆ มากมาย โปรแกรมเมอรม์ ักจะใช้คานาหน้า (prefixs) ในการตั้งชอ่ื คอนโทรล ต่อไปนี้ เปน็ คาแนะนาของไมโครซอฟท์ ทีค่ ุณควรใช้ตัง้ ช่อื คอนโทรล และอ๊อบเจ็กต์ ดังตารางตอ่ ไปนี้ คอนโทรล คานาหน้า ตวั อย่าง (Prefixs) CheckBox chkStudents ComboBox chk cboSalary CommandButton cbo cmdExit CommonDialog cmd dlgSave Data Control dlg datStudents DBComboBox dat dbcList DBGrid dbc dbgWork1 DBListBox dbg dblDisplay DirListBox dbl dirDestination DriveListBox dir drvMain FileListBox drv filInput Frame fil fraDisplay HScrollBar fra hsbColor Image hsb imgMain Label img lblName Line lbl ListBox lin linTop OptionButton lst lstMouth Ole Container opt optSex PictureBox ole oleWord Shape pic picPeople TextBox shp shpCircle Timer txt txtInput VScrollBar tmr tmrCount vsb vsbHeight

ชนดิ ของขอ้ มูล VB มีชนิดของขอ้ มูลท่เี ป็นพ้ืนฐาน ให้คณุ เลือกใชไ้ ดเ้ หมาะสมตามท่ีคุณต้องการมากมาย ไมว่ า่ จะเป็นจานวน เต็ม (Integer), เศษสว่ น (Single, Double) ทีค่ ุณยงั สามารถ เลอื กความละเอยี ดจานวนตวั เลขได้อีกดว้ ย เพ่ือให้ เหมาะสมกบั ข้อมลู ท่ีคณุ ต้องการเก็บ, ขอ้ ความ (string), ตวั เลขทางการเงนิ (Currency), คา่ ทางตรรก (boolean) เปน็ ตน้ ข้อมูลแต่ละชนดิ ท่ีกลา่ วมา จะใชพ้ ้นื ท่ีในการเก็บไม่เท่ากัน รวมถึงความเรว็ ในการประมวลผลก็แตกต่างกัน ด้วย เชน่ ถา้ เปน็ ตัวเลข ใหค้ ณุ พยายามใช้ข้อมูลชนิด Integer ใหม้ ากทส่ี ุด เพราะวา่ ใชท้ รพั ยากรน้อย และประมวลผล ได้เร็ว แต่ก็ต้องขนึ้ อยกู่ ับข้อมูลที่จะเกบ็ ดว้ ย เน่ืองจากข้อมูลชนดิ Integer สามารถเกบ็ ค่าทีอ่ ยู่ระหวา่ ง -32768 ถึง 32767 เทา่ น้นั ให้คุณเลือกใช้ชนดิ ของข้อมูลทใ่ี ชท้ รัพยากรระบบให้นอ้ ยทีส่ ดุ เท่าทจี่ ะเป็นไปได้กอ่ น โดยท่ยี ังสามารถ รองรับความต้องการของคุณได้ ตารางตอ่ ไปนี้ เป็นชนดิ ของข้อมลู เบื้องตน้ ที่ VB สนันสนุน สิง่ ท่ีคุณควรสนใจก็คอื ชนดิ ของขอ้ มูลทสี่ ามารถเกบ็ ได้, ขอบเขตของข้อมูล, ใช้หนว่ ยความจาระบบเท่าใด, และสญั ลกั ษณ์พเิ ศษท่ใี ชแ้ ทนชนิดของข้อมูล ใชใ้ นกรณีทคี่ ุณ ตอ้ งการใช้งานตัวแปรแบบ Implicit ชนิดของข้อมูล สญั ลักษณ์พเิ ศษ ใช้หนว่ ยความจา รายละเอยี ด Boolean ไมม่ ี 2 Bytes เก็บคา่ ทางตรรก มีได้ 2 ค่า คือ true (จริง) , false (เทจ็ ) โดยท่ี VB กาหนดไว้ว่า 0 มีค่าเท่ากบั false และตัวเลข จานวนเต็มใดท่ีไมเ่ ท่ากับ 0 มคี ่าเทา่ กับ true Byte ไม่มี 1 Byte เก็บค่าเลขจานวนเต็มต้งั แต่ 0-255 ซ่งึ เป็นรหัสแอสกี ASCII Currency @ 8 Bytes ใชเ้ ก็บตัวเลขจานวนจริง มีคา่ ระหว่าง - 922,337,203,685,477.5808 ถงึ 922,337,203,685,477.5807 ใชส้ าหรับเก็บตัวเลขทาง การเงินโดยเฉพาะ เพราะมีความละเอยี ดสงู มีทศนิยม 4 ตาแหน่ง Variant ไมม่ ี ข้ึนอยู่กับชนิด สามารถเกบ็ ขอ้ มูลได้ทุกชนิด ขอ้ มลู ที่เก็บ Integer % 2 Bytes เก็บคา่ เลขจานวนเต็มท่ีมีคา่ ระหวา่ ง -32768 ถงึ 32767 Long & 4 Bytes ใช้เก็บเลขจานวนเตม็ ท่ีมีคา่ ระหว่าง -2,147,483,648 ถงึ 2,147,483,647

Single ! 4 Bytes ใช้เกบ็ ตวั เลขจานวนจรงิ แยกเป็น 2 กรณี คือ ค่าบวกอยู่ Double ระหวา่ ง 1.401298E-45 ถงึ 3.402823E38 และคา่ ลบอยู่ ระหวา่ ง -3.402823E38 ถึง -1.401298E-45 String Date # 8 Bytes ใชเ้ กบ็ ตวั เลขจานวนจริง แยกเป็น 2 กรณี คือ คา่ บวกอยู่ Decimal ระหว่าง 4.94065645841247E-324 ถึง 1.79769313486232E308 คา่ ลบอยรู่ ะหวา่ ง - Object 1.79769313486232E308 ถึง -4.94065645841247E- 324 $ 1 ตวั /1 ใช้เก็บตวั อักษร ขอ้ ความ และตัวเลข ไบต์ (ascii) ไม่มี 8 Bytes ใช้สาหรับเก็บวนั เดือนปี ไม่มี 12 Bytes กรณีเลขจานวนเตม็ มีค่าต้ังแต่ - 79,228,162,514,264,337,593,543,950,335 ถงึ +79,228,162,514,264,337,593,543,950,335 กรณเี ลขทศนิยม มีค่าตงั้ แต่ - 7.9228162514264337593543950335 ถงึ +- 7.9228162514264337593543950335 คา่ ทนี่ ้อยทสี่ ดุ ที่ไม่เท่ากับศนู ย์ทีส่ ามารถเก็บได้คอื 0.0000000000000000000000000001 ไมม่ ี ? ใช้สาหรบั แทนอ๊อบเจก็ ต์ หรือคอนโทรลที่ VB สนบั สนุน ตารางดังกล่าว เป็นเพียงชนดิ ของข้อมูลเบือ้ งตน้ เทา่ น้ัน ยงั มีชนดิ ของข้อมูลอื่นๆ อีก ทยี่ งั ไม่ได้กล่าวไว้ ผเู้ ขียนจะ อธิบายอีกครง้ั ในกรณที ี่มกี ารใชข้ ้อมลู ชนิดอืน่ ๆ รูปแบบการประกาศตวั แปรมีดงั น้ี Dim x As Integer หมำยถึง ให้ตัวแปร x เก็บขอ้ มลู ทีเ่ ปน็ ตวั เลขจำนวนเต็มเท่ำนัน้ (มคี ่ำอยู่ระหว่ำง - 32768 ถงึ 32767) Dim y As String หมำยถงึ ใหต้ ัวแปร y เกบ็ ข้อมูลที่เปน็ ข้อควำม หรือตัวอักษรเทำ่ นั้น ให้คุณสังเกต VB จะใช้ฟอนต์ สีนา้ เงนิ แทนคาสงวน หรือคาสั่ง, สดี าแทนตัวแปร และ สีเขยี นแทนหมาย เหตุ รายละเอยี ดของข้อมูล แต่ละชนิด มีดังน้ี

Boolean เปน็ ข้อมูลชนดิ บูลนี (Boolean) ใช้หน่วยความจา 2 bytes สามารถมีค่า True (จรงิ ) หรอื False (เท็จ) เท่าน้ัน ถา้ คุณกาหนดเป็นตัวเลข โดยท่ี 0 หมายถึง False และตวั เลขจานวนเตม็ ใดๆ ที่ไมเ่ ท่ากับ 0 หมายถึง True เช่น Dim a As Boolean กาหนดให้ตวั แปร a เปน็ ตัวแปรชนิดบลู นี Byte เปน็ ขอ้ มลู ชนิดเลขจานวนเตม็ มคี า่ ระหว่าง 0-255 โดยใชห้ น่วยความจา 1 byte มักใชเ้ กบ็ รหัสโค้ดแอสกี้ ท่ีมี จานวน 256 ตัวอักษร เช่น Dim asc As Byte กาหนดใหต้ วั แปร asc เป็นตวั แปรชนิด Byte Currency เปน็ ขอ้ มลู ชนดิ ท่ีมคี ่าต้ังแต่ -922,337,203,685,477.5808 ถึง 922,337,203,685,477.5807 ใช้หน่วยความจา 8 bytes ใช้สาหรับเกบ็ ตัวเลขทางการเงนิ โดยเฉพาะ เพราะมีความละเอยี ดสงู มีทศนยิ ม 4 ตาแหน่ง เช่น Dim Deb As currency Date เป็นข้อมูลสาหรบั ใช้เกบ็ วันท่ี ซ่ึงสามารถเกบ็ ได้ตงั้ แต่วันท่ี 1 January 100 ถงึ วนั ท่ี 31 December 9999 และ เกบ็ เวลาได้ต้งั แต่ 0:00:00 ถงึ 23:59:59 ในการใชข้ อ้ มลู ชนดิ นี้ คณุ ตอ้ งใช้เครื่องหมาย #...# ล้อมรอบค่าของตวั แปร ด้วย ใช้หนว่ ยความจา 8 bytes เชน่ Dim dte As Date dte = #12/31/1999 11:59:59 PM# Decimal เป็นขอ้ มูลชนดิ เลขจานวนจริง ใช้หนว่ ยความจา 12 bytes ซง่ึ จะแยกออกเป็น 3 กรณีคือ o กรณีเลขจำนวนเตม็ มคี ่าต้ังแต่ -79,228,162,514,264,337,593,543,950,335 ถงึ +79,228,162,514,264,337,593,543,950,335 o กรณเี ลขทศนยิ ม มคี า่ ตง้ั แต่ -7.9228162514264337593543950335 ถึง +- 7.9228162514264337593543950335 o คำ่ ที่น้อยที่สดุ ทไี่ มเ่ ทำ่ กับศนู ย์ ที่สามารถเกบ็ ไดค้ ือ 0.0000000000000000000000000001

o ใน Visual Basic 6.0 คุณยงั ไมส่ ามารถประกาศ ให้เป็นข้อมูลชนดิ นไี้ ด้โดยตรง คุณต้องทา 2 ข้ันตอนดงั น้ี o 1.ประกาศตวั แปรให้เป็นข้อมูลชนิด Variant ก่อน 2.ใช้ฟงั กช์ นั CDec ( ) เพ่ือแปลงชนดิ ของข้อมูลจาก Variant เป็น Decimal ดังนี้ Dim a As Variant a = CDec(\"123456789123456789\") Double ใชเ้ กบ็ ตวั เลขจานวนจรงิ แยกเปน็ 2 กรณี คอื ค่าบวกอย่รู ะหว่าง 4.94065645841247E-324 ถึง 1.79769313486232E308 ค่าลบอยรู่ ะหวา่ ง -1.79769313486232E308 ถงึ -4.94065645841247E-324 ใช้ หน่วยความจา 8 bytes เชน่ Dim aBs As Double Integer ใช้เก็บเลขจานวนเตม็ ท่ีมีค่าต้ังแต่ -32768 ถงึ 32767 ใชห้ นว่ ยความจา 2 byte เช่น Dim count As Integer Long ใชเ้ ก็บเลขจานวนเตม็ ที่มีคา่ ระหว่าง -2,147,483,648 ถงึ 2,147,483,647 ใชห้ นว่ ยความจา 4 byte เช่น Dim num As Long Single ใช้เก็บตวั เลขจานวนจริง แยกเป็น 2 กรณี คือ ค่าบวกอยู่ระหวา่ ง 1.401298E-45 ถึง 3.402823E38 และค่าลบ อยู่ระหวา่ ง -3.402823E38 ถึง -1.401298E-45 ใช้หน่วยความจา 4 byte เช่น Dim Intr As Single String เปน็ ขอ้ มลู ชนิดข้อความ ซง่ึ อาจเปน็ ไดท้ ้ังตวั อักษร หรือตวั เลขก็ได้ ขนาดหน่วยความจาทีใ่ ช้จะขึ้นอยู่กบั รูปแบบ การจดั เก็บ คือ ถ้าตัวอกั ษรทเ่ี ก็บอยใู่ นรปู แบบ ASCII จะใช้พนื้ ท่ี 1 ตัวต่อ 1 byte แตถ่ ้าเกบ็ ในรูปแบบ Unicode อกั ษรแต่ละตัวจะใช้พืน้ ท่ี 1 ตวั ตอ่ 2 bytes ข้อมลู ชนดิ String สามารถแบง่ ออกได้ 2 ประเภท คือ

o Variable-length string หมายถึง เปน็ ตัวแปร String ทีค่ ณุ ไม่ได้กาหนดขนาดของตัวอกั ษรไว้ คุณสามารถ ใสต่ วั อกั ษรได้ 65526 ตวั อักษร (ascii) และ 32763 ตวั อักษร (unicode) o Fixed-length string หมายถึง เป็นตวั แปร String ท่ีคุณจากัดขนาดตวั อกั ษรไว้ คณุ จะตอ้ งใช้เลขจานวน เตม็ เท่านั้น ในการจากดั ขนาดตวั อกั ษร เช่น Dim a As String * 99 หมายถึง ตัวแปร a สามารถเกบ็ ตัวอักษร รวมช่องวา่ งได้ไมเ่ กิน 99 ตวั อกั ษร สงู สุดที่ 98 ตวั อักษร ตวั สดุ ทา้ ยใช้เก็บตัวอักษร พิเศษ null กากับไว้เพ่ือบอกให้ร้วู า่ จบข้อความแลว้ ซง่ึ เป็นกฎเกณฑท์ ค่ี ุณควรทราบไวส้ าหรับในการใช้ตวั แปรชนดิ String สาหรบั ในการใช้งานตวั แปร String แบบจากดั ขนาดนี้ ใหค้ ุณระวงั ในเร่อื ง ขนาดของข้อความที่จดั เก็บ ถ้า ขอ้ ความมีจานวนตัวอักษร เกินกวา่ ทค่ี ุณกาหนดไว้ ขอ้ ความสว่ นทเ่ี กินจะถกู ตดั ออกไป กำรใชง้ ำนตัวแปรแบบใชส้ ัญลักษณ์พิเศษกำกับ คุณยงั สามารถใช้งานตัวแปรได้ โดยการใชส้ ัญลกั ษณพ์ เิ ศษต่อทา้ ยตวั แปรนนั้ ๆ ให้คณุ ดตู ารางต่อไปน้ี ชนิดของ สญั ลกั ษณ์พเิ ศษ ขอ้ มูล Integer % Long & Single ! Double # Currency @ String $ การประกาศใชง้ านตวั แปรแบบปกติ ถา้ คณุ ต้องการตัวแปรแบบ Integer คุณจะต้องประกาศ ดังน้ี Dim x As Integer หมำยถงึ ใหต้ ัวแปร x เกบ็ ข้อมูลชนดิ เลขจำนวนเตม็ แตค่ ณุ สามารถใช้สัญลกั ษณพ์ เิ ศษต่อท้ายตวั แปรเพอ่ื กาหนดให้ตัวแปรแทนชนดิ ของขอ้ มลู ที่คุณต้องการได้ ซึ่งถ้า คุณใช้วิธนี ้ี คณุ ต้องใชต้ ลอดท้ังโพรซีเดอร์ เช่น Dim x% หมายถึง ใหต้ ัวแปร x เก็บข้อมูลชนดิ เลขจานวนเตม็ Integer เช่นกัน Dim x& หมายถึง ให้ตวั แปร x เกบ็ ข้อมูลชนดิ เลขจานวนเต็ม Long Dim x! หมายถงึ ให้ตัวแปร x เกบ็ ข้อมูลชนดิ เลขทศนยิ มแบบ Single (ความละเอยี ดตา่ ) Dim x# หมายถงึ ใหต้ ัวแปร x เกบ็ ข้อมลู ชนดิ เลขทศนยิ มแบบ Double (ความละเอียดสูง) Dim x@ หมายถงึ ใหต้ ัวแปร x เกบ็ ข้อมูลชนิดเลขทางการเงนิ Currency Dim x$ หมายถึง ใหต้ วั แปร x เกบ็ ข้อมลู ชนดิ ข้อความ String

การประกาศตวั แปรแบบปกติ หรอื ประกาศแบบใช้สญั ลักษณ์พเิ ศษต่อทา้ ย มผี ลเหมือนกันทกุ ประการ คุณสามารถ เลือกใช้ไดอ้ ย่างอสิ ระ ขอบเขตของตวั แปร (Scope of Variable) ตัวแปรทีค่ ุณต้องการใชง้ านในแอพพลิเคชันหน่ึงๆ จะมีมากมายหลายชนดิ สง่ิ หนง่ึ ท่คี ณุ ควรทราบกค็ ือ ตวั แปรแตล่ ะตัวมขี อบเขต การใช้งานเป็นอย่างไร หัวขอ้ นี้จะเป็นการอธิบาย ข้อจากดั และขอบเขตของตวั แปร ใน VB สามารถแบง่ ขอบเขตตวั แปรได้ 2 ประเภท คอื 1.ตวั แปรแบบ Local 2.ตัวแปรแบบ Public ตัวแปรแบบ Local หมายถึง ตวั แปรท่ีคณุ ประกาศข้นึ มา และสามารถเรียกใชง้ านได้ ในเฉพาะโพรซเี ดอร์ ท่ีประกาศเทา่ นั้น มักใช้ ประกาศตัวแปรที่คุณต้องการใชช้ ่ัวคราว หรอื ต้องการใชแ้ ค่ในโพรซเี ดอร์นน้ั ๆ เชน่ Private Sub Command1_Click() Dim x As Integer Dim y As Long x=x+y End Sub Private Sub Command2_Click() x=x*y End Sub จากตวั อยา่ งข้างตน้ ตวั แปร x แทนชนดิ ข้อมูล Integer และ y แทนข้อมูล Long คณุ สามารถเรยี กใชง้ านตัวแปร ท้ัง 2 ได้เฉพาะในโพรซเี ดอร์ Command1_Click( ) เท่าน้ัน (ในกรณีทคี่ ณุ กาหนดให้ VB ใส่ประโยค Option Explicit) ถ้าคุณเรยี กใชง้ านตวั แปรดงั กลา่ ว ในโพรซเี ดอร์ Command2_Click( ) VB จะแสดงข้อความ Variable not defined ซงึ่ หมายถงึ ตวั แปร x และ y ในโพรซีเดอร์ Command2_Click( ) ไม่ได้มกี ารประกาศตวั แปร จงึ ไม่ สามารถนาตวั แปร x และ y มาใช้ได้ เพราะตวั แปร x และ y ทีค่ ุณประกาศไว้ มขี อบเขตการใชง้ านในระดับ Local หรือแคใ่ นโพรซเี ดอร์ท่ีประกาศไว้เทา่ นัน้ แต่ถา้ ในกรณีท่ีคุณไม่ไดก้ าหนดให้ VB ใส่ขอ้ ความ Option Explicit ตวั แปร x และ y คุณสามารถเรยี กใชง้ านได้ ในโพรซีเดอร์ Command2_Click( ) แตต่ ัวแปรทั้ง 2 จะเป็นขอ้ มลู ชนดิ Variant ซง่ึ คณุ ไม่มีความจาเปน็ ต้องใช้ และตวั แปรชนิด Local นจ้ี ะถกู ยกเลิกหรือถกู ทาลาย ซ่งึ หมายถงึ คืนหน่วยความจา ใหก้ บั ระบบ เมือ่ จบโพรซีเดอร์ (End Sub) ทนั ที แตถ่ า้ คุณตอ้ งการใช้งานตัวแปรในโพรซเี ดอร์ Command2_Click ( ) โดยใช้ช่ือ x และ y เหมือนกัน VB จะถือว่า เป็นตวั แปรคนละตัว และจะจองหนว่ ยความจาให้แตล่ ะตัว ไม่เกี่ยวข้องกันแต่อยา่ งใด เชน่

Private Sub Command1_Click() Dim x As Integer Dim y As Long x=x+y End Sub Private Sub Command2_Click() Dim x As Long Dim y As Single x=x*y End Sub จากตวั อย่างขา้ งตน้ คุณยังสามารถประกาศให้ตัวแปร x และ y ให้แทนชนิดข้อมลู ต่างกนั ได้อกี ดว้ ย เหตุผลกค็ อื ตวั แปรท้ัง 4 ตัว เปน็ แบบ Local น่ันเอง ตัวแปรแบบ Public หมายถึง ตัวแปรที่คณุ ประกาศใช้งานแล้ว คุณสามารถเรียกใชง้ านได้ทั้งโปรเจ็กต์ โพรซเี ดอร์ใด ฟอร์มใดก็ได้ อาจ เรียกได้อกี อย่างหนึ่งวา่ ตวั แปรรว่ มแบบ Public หรือตวั แปรระดบั โมดูล มักจะใช้ในกรณีท่ตี อ้ งเก็บค่าตัวแปร ท่ตี ้องใช้ ทกุ ฟอร์ม หรือทกุ โพรซีเดอร์ เช่น กรณีท่ีคุณเขยี นโปรแกรม ซื้อ-ขายสินคา้ ไม่วา่ จะเป็นการซื้อ หรอื ขาย ภาษีก็เทา่ กบั 7 % เสมอ (สมมติ) คุณไม่ต้องประกาศตัวแปรภาษี ทุกโพรซีเดอร์ หรือถ้าเปน็ โปรแกรมเงินเดอื น จะต้องมกี ารหัก เงินประกนั สงั คม 3% ของพนักงานทุกคน คุณก็ไม่ต้องประกาศตวั แปรเงนิ ประกนั สังคมในทกุ โพรซเี ดอร์ คุณ สามารถเลอื กใช้ตวั แปรแบบ Public ได้ดังน้ี o ให้คณุ เลือกเมนู Project/Add Module VB จะเพิม่ ไฟล์โมดลู .bas (Module) เขา้ มาในโปรเจ็กต์ ให้คุณ สังเกตท่ีหนา้ ต่าง Project Explorer จะมรี ายการ Module1 เพ่มิ เข้ามาในโปรเจก็ ต์ ดงั รูป ไฟล์โมดูล (Module) เปน็ พ้นื ท่ีพิเศษท่ใี ช้สาหรบั ประกาศตวั แปร, ฟังกช์ ันทคี่ ุณเขยี นขึ้นมา, General Procedure, หรือฟังก์ชนั Windows API ฯลฯ เทา่ นั้น คณุ ไม่สามารถเขียนโคด้ ในไฟลโ์ มดลู นีไ้ ด้ คณุ สามารถสังเกต ได้โดยดทู ช่ี ่อง Object list box และช่อง Event list box ไม่มรี ายการอ๊อบเจ็กต์ หรือรายการเหตกุ ารณแ์ ต่อยา่ งใดใน บางคร้งั คุณอาจการประกาศค่าคงท่ี เพื่อแทนตัวแปรแบบ Public กไ็ ด้ o คณุ ต้องประกาศตวั แปรโดยใช้คาสัง่ Public แทนคาส่งั Dim ดังรูป ใหค้ ุณระวังในจดุ น้ีไว้ เพราะ เน่ืองจากว่า คุณอาจจะมีความเคยชินในการใช้คาสั่ง Dim เสมอ เพ่ือประกาศตวั แปร เพราะถ้าคณุ ใช้คาสั่ง Dim ในการประกาศตัวแปรท่ีไฟลโ์ มดลู มันจะกลายเป็นตวั แปรระดบั Local ท่ีสามารถเรยี กใช้งานได้ เฉพาะ ในโมดูลท่ปี ระกาศเท่านนั้ ซ่ึงก็จะไมใ่ ช่ตัวแปรแบบ Public ตามท่คี ุณต้องการ และจะเกดิ ข้อความ Variable not defined เจา้ เกา่ :-) เมอ่ื คุณประกาศตัวแปรแบบ Public แล้ว ในโพรซเี ดอร์ Command1_Click ( ) และ Command2_Click ( ) คุณสามารถใช้งานตวั แปรท้งั 2 ได้ โดยไมต่ ้องประกาศตัวแปรอกี แต่อยา่ งใด

Private Sub Command1_Click() x=x+y End Sub Private Sub Command2_Click() x=x*y End Sub ถ้าในกรณีที่คุณมีการประกาศตวั แปรแบบ Local และตัวแปรแบบ Public โดยใชช้ อ่ื เดยี วกนั VB จะถือวา่ เป็นตวั แปรคนละตัว คนละแบบ และจะจองหน่วยความจา ให้กับตวั แปรท้งั 2 ไมเ่ กย่ี วข้องกนั แตอ่ ย่างใด และจะให้ ความสาคัญกบั ตวั แปรแบบ Local ก่อนตวั แปรแบบ Public เสมอ เช่น o ให้คณุ ทดสอบโดยการประกาศตัวแปรในไฟล์ดูล ดังรูป จากนั้นในแต่ละโพรซเี ดอร์ ให้คุณประกาศตัวแปร โดยใชช้ อ่ื เหมือนกนั แตต่ า่ งชนิดข้อมูลกัน ดงั น้ี Private Sub Command1_Click() x=x*y End Sub Private Sub Command2_Click() Dim x As String x=x+y End Sub ให้คุณทดลองรนั แลว้ คุณลองคลกิ๊ ปุ่ม Command2 ปรากฎวา่ จะเกิดข้อความ Run-time '13' Type mismatch ซงึ่ หมายถงึ ข้อมูลผดิ ประเภท เนอ่ื งจากวา่ ตัวแปร x (แบบ Public) ทคี่ ณุ ประกาศไว้ในโมดูล เป็นข้อมลู ตัวเลขจานวนเต็ม Long แต่ตวั แปร x (แบบ Local) ท่ีคุณประกาศไวใ้ นโพรซีเดอร์ Command2_Click ( ) เป็นชนิด ข้อความ String เปน็ ไปไม่ได้ที่ ตวั เลข+ตวั เลข จะเท่ากับข้อความ ถึงแม้ว่า จะเปน็ ข้อความท่ีเปน็ ตวั เลข แตเ่ ปน็ ตวั เลขทไ่ี มส่ ามารถนาไปคานวนไดเ้ ต็มรูปแบบ ให้คณุ ระวังในจุดน้ใี ห้ดี และขอให้คุณใชต้ ัวแปรแบบ Public เท่าท่ีจาเปน็ เท่านัน้ กำรใช้งำนตวั แปรร่วมระดับโพรซเี ดอร์ หมายถงึ เป็นตวั แปรที่คุณประกาศแล้ว สามารถใช้งานไดท้ ุกๆ โพรซเี ดอร์ แต่ไม่สามารถเรียกใชใ้ นระดบั โปรเจก็ ต์ แบบ Public ได้ ซ่ึงถา้ เรยี งลาดบั ขอบเขต ความสามารถในการเรยี กใชง้ านแลว้ ตัวแปรแบบ Public จะมีขอบเขต กว้างที่สดุ ก็คอื คุณสามารถเรียกใชง้ าน ที่จดุ ใดก็ได้ในโปรเจ็กต์ รองลงมาก็คือ ตวั แปรรว่ มระดบั โพรซเี ดอร์ ซึ่งคุณ สามารถเรยี กใชง้ านได้ในทกุ ๆ โพรซีเดอรท์ ี่อยู่ในฟอร์มทีป่ ระกาศเท่าน้นั และท้ายสดุ คือตัวแปรแบบ Local กค็ อื คุณ สามารถเรยี กใช้งานตวั แปรแค่ในโพรซเี ดอร์ที่ประกาศไว้เท่านน้ั วธิ กี ารประกาศตวั แปรรว่ มระดับโพรซีเดอร์ ก็คอื o ให้คณุ ดบั เบิ๊ลคลิ๊ก ที่ฟอร์มเพ่ือเปิดหน้าตา่ ง editor แล้วเลอื ก General ใน Object list box ประกาศตัว แปรโดยการใช้คาสง่ั Dim ดงั รปู

เน่อื งจากว่า ในแอพพลิเคชันหนงึ่ ๆ อาจจะมี 2 ฟอร์มข้ึนไป คุณอาจใชต้ วั แปรร่วมระดับโพรซเี ดอร์ เพื่อจากัด ขอบเขตการเรยี กใช้งานก็ได้ โดยตัวแปรร่วมระดับโพรซีเดอร์ จะมีขอบเขตเรียกใชง้ าน แคใ่ นฟอร์มท่ีประกาศไวเ้ ท่าน้นั ยกตัวอย่างเช่น ถา้ คณุ เขียนโปรแกรมซ้ือ-ขาย และโปรแกรมคดิ เงนิ เดือน โดยกาหนดให้ โปรแกรมซื้อ-ขาย อยใู่ น Form1 และโปรแกรมคิดเงินเดอื นให้อยใู่ น Form2 ซง่ึ ท้งั 2 โปรแกรม ยังคงอย่ใู นโปรเจ็ตกเ์ ดียวกัน เป็นโปรเจก็ ต์ สารพดั ประโยชน์จรงิ ๆ :-) คณุ อาจใชต้ ัวแปรร่วมระดับโพรซีเดอร์ เพื่อประกาศอตั ราภาษี 7% ซึงใช้ร่วมกนั ทุกโพรซี เดอร์ เฉพาะใน Form1 เทา่ น้ัน สว่ นในโปรแกรมเงินเดือน ไม่มีการใชภ้ าษี 7% แต่อย่างใด ในทางกลบั กัน คณุ ตอ้ งการประกาศอัตราเงินประกนั สงั คม 3% ซ่งึ ใชร้ ว่ มกันทุกโพรซีเดอร์เฉพาะใน Form2 เท่าน้ัน โปรแกรมซื้อ-ขาย ไม่ต้องการ อัตราเงนิ ประกันสังคมแต่อยา่ งใด เพื่อใหค้ ุณเห็นภาพได้ชดั เจนมากยิ่งข้ึน ให้คณุ ทดลองทาดังนี้ ใน Form1 ประกอบไปดว้ ย 3 โพรซเี ดอร์ ให้คุณใสค่ อนโทรล CommandButton 3 ตวั และเขียนโค้ดดงั นี้ Private Sub Command1_Click() a=a+b End Sub Private Sub Command2_Click() a=a*b End Sub Private Sub Command3_Click() Form2.Show 'Display Form2 End Sub ในส่วนของ Form1 ใหค้ ุณประกาศตวั แปรระดบั โพรซเี ดอร์ ดังน้ี o ให้คุณเพมิ่ Form2 เขา้ มา โดยเลือกเมนู Project/Add Form เลือกไอคอน Form ดงั รปู จากน้ันใส่คอนโทรล CommandButton 2 ตวั ท่ี Form2 และเขียนโค้ด ดังน้ี Private Sub Command1_Click() a=a+b End Sub Private Sub Command2_Click() a=a*b End Sub ให้คณุ รนั โปรเจก็ ต์ ทดลองคล๊ิกทีป่ ุ่ม Command1 และ Command2 ของ Form1 ปรากฎว่าไมม่ ีอะไรเกดิ ข้นึ เพราะเป็นการคานวณธรรมดา ให้คุณคลิ๊กท่ีปมุ่ Command3 แลว้ Form2 จะปรากฎขึ้นมา ให้คณุ คลกิ ที่ปุ่ม

Command1 หรอื Command2 ของ Form2 ปรากฎว่า จะมีข้อความ Variable not defined เจ้าเกา่ อีกนน่ั เอง ปรากฎขนึ้ มา จากการทดลองดังกล่าว สรุปไดว้ ่า ตัวแปร a และ b ซ่งึ ถูกประกาศให้เปน็ ตวั แปรร่วมระดับโพรซีเดอร์ มีขอบเขต การใช้งานแค่ใน Form1 เท่านั้น คณุ สามารถเรียกใชง้ านได้ ทงั้ ในโพรซเี ดอร์ Command1_Click ( ) และ Command2_Click ( ) ทอ่ี ยู่ใน Form1 เท่าน้นั แต่คุณไม่สามารถใชง้ านตัวแปร a และ b ใน Form2 ได้เลย เพราะ ตวั แปร a และ b มีข้อจากดั การใชง้ าน แคใ่ นฟอร์มทป่ี ระกาศเทา่ น้ัน ให้คุณลองเปลีย่ นจากการประกาศใน Form1 เปน็ ประกาศในโมดลู ปรากฎว่า จะไม่มปี ัญหาในการใช้งานตัวแปร a และ b แต่อยา่ งใด กำรต้งั ชอ่ื ตัวแปรแบบบอกชนดิ และขอบเขตของตวั แปร ในการเขยี นแอพพลิเคชันทว่ั ๆ ไป คุณจะต้องมีการเรียกใชง้ านตวั แปรตา่ งๆ มากมาย ซง่ึ คุณไมส่ ามารถท่จี ะจดจา ได้อยา่ งถูกตอ้ งท้งั หมด มแี นวทางการตั้งชือ่ ทีโ่ ปรแกรมเมอร์มืออาชีพนยิ มใช้ เพื่อบอกชนิด หรือขอบเขตของตวั แปร เมอื่ เวลาท่ยี ้อนกลบั มาดู source code สามารถที่จะศึกษาได้ source code ดังกลา่ วได้ไม่ยากนัก ซง่ึ จะอานวย ประโยชนเ์ ป็นอยา่ งยง่ิ เช่น ถ้าคณุ มีการประกาศตัวแปรเพ่ือ ใช้สาหรับเก็บค่าเงินเดอื น คณุ อาจตง้ั ชื่อดงั น้ีกไ็ ด้ Dim iSalary As Integer ตัว i สื่อใหร้ วู้ ่า ตวั แปร iSalary เปน็ ขอ้ มูลชนิด Integer Dim strUser As String ตวั str สอ่ื ใหร้ ู้วา่ ตัวแปร strUser เป็นข้อมลู ชนิด String หรอื ถา้ คุณระบุขอบเขตของตัวแปรด้วยก็ได้ เช่น Dim iLocSalary As Integer ตวั i สื่อใหร้ ู้วา่ เป็นตัวแปรชนิด Integer โดยมขี อบเขตระดับ Local Dim strModName As String ตวั str สื่อใหร้ วู้ ่า เปน็ ตัวแปรชนดิ String โดยมีขอบเขตการใชง้ านระดบั Module Dim lngLocEmployee As Long ตัว lng สื่อให้รูว้ า่ เป็นตัวแปรชนดิ Long โดยมขี อบเขตการใช้งานระดบั Local เป็นต้น การต้ังชือ่ แบบน้ี เหมาะกับแอพพลเิ คชนั ที่ต้องมีการใชง้ านตัวแปรจานวนมากๆ และคณุ ต้องการ ให้ source code มีระเบียบ มีความเป็นมืออาชีพมากย่งิ ข้ึน และสามารถย้อนกลบั มาศึกษา source code นไ้ี ด้อยา่ งไมย่ ากเย็น คุณจะพบ source code ทม่ี กี ารต้ังชื่อตัวแปรแบบนี้ เม่ือมีการเรยี กใช้ งานกลุม่ ฟงั ก์ชัน Windows API รว่ มดว้ ย หรือเป็นตวั อย่างแอพพลเิ คชันที่มขี นาดใหญม่ ากๆ

ตวั แปรอำร์เรย์ (Array) ตวั แปรอารเ์ รย์ เป็นกลุ่มของตวั แปรท่ีคุณประกาศข้ึนมา โดยใชช้ ่อื ของตัวแปรแตล่ ะตัวเหมือนกนั ข้อแตกต่างของ ตวั แปรแตล่ ะตัว จะใชค้ ่า Index ในการอ้างอิง ตัวแปรชนิดน้มี ปี ระโยชน์ในแง่ของการเก็บขอ้ มูลที่คล้ายๆ กนั เป็นชุดๆ โดยท่คี ุณไม่ตอ้ งห่วงเรอื่ งการตงั้ ชอื่ ตัวแปรแตล่ ะตวั เพราะมชี ่อื เหมือนกัน ตา่ งกันที่ค่า Index จะทาให้การเรียกใช้ งานตวั แปรเหล่าน้ีง่าย และสะดวกกว่า ซ่งึ ตัวแปรทีป่ ระกาศเปน็ แบบอารเ์ รยน์ ี้ แตล่ ะตัวจะเรียกวา่ สมาชกิ ตวั ท่ี .... มีรูปแบบการประกาศดงั น้ี Dim intCnt( ) As Integer จะเหน็ ได้วา่ มีความคล้ายกับการประกาศตัวแปรแบบปกติ ทเ่ี พ่ิมขึน้ มาก็คือ เคร่ืองหมายวงเลบ็ ตอ่ ท้ายชือ่ ตัวแปร ซ่งึ หมายถงึ คุณต้องการใชง้ าน ตวั แปรแบบอาร์เรย์ ซึง่ สมาชกิ แต่ละตวั ในตวั แปรอารเ์ รย์ จะต้องเปน็ ข้อมลู ชนดิ เลข จานวนเตม็ Integer เท่านั้น ตัวแปรอารเ์ รยม์ ี 2 ชนิด คือ 1.ตวั แปรอารเ์ รยแ์ บบสแตติก (Static Arrays) 2.ตัวแปรอาร์เรยแ์ บบไดนามิก (Dynamic Arrays) ตัวแปรอำร์เรย์แบบสแตติก (Static Arrays) เป็นอารเ์ รยท์ มี่ จี านวนสมาชิกทแี่ น่นอน ซ่ึงคุณตอ้ งระบุจานวนสมาชิก โดยใชเ้ ลขจานวนเตม็ เขา้ ไปในวงเลบ็ ด้วย ขอให้คุณจาลองหน่วยความจาในเครอ่ื งวา่ เปน็ ห้องๆ ติดกัน แต่ละหอ้ งสามารถเก็บข้อมูลได้ 1 ตัวอกั ษร VB จะจอง จานวนหอ้ งเพื่อเก็บขอ้ มลู ใหเ้ ทา่ กับจานวนตัวแปรอาร์เรย์ท่ีคุณระบุไว้ เชน่ Dim x(5 ) As Integer หมายถงึ ตัวแปร x เป็นตัวแปรอารเ์ รย์ชนดิ สแตติก ท่ใี ชเ้ ก็บเลขจานวนเตม็ Integer โดยทีม่ ี สมาชิกท้ังสน้ิ 5 ตัว การใชง้ านตัวแปรแตล่ ะตวั โดยการใช้ชื่อ x(0) เป็นตวั ท่ี 1 หรือเรยี กอีกอยา่ งหนึ่งวา่ ขอบเขต ลา่ ง ไปจนถงึ x(4) เป็นตัวที่ 5 หรือเรยี กอีกอย่างหนึ่งวา่ ขอบเขตบน ซ่ึงจะมคี วามสาคญั เปน็ อย่างยงิ่ ในการใชง้ านตัว แปรแบบอาร์เรย์ โดยปกติแล้วสมาชิกตวั แรกของตวั แปรแบบอารเ์ รย์ จะมีลาดับที่ 0 เสมอ Dim x(1 To 10 ) As Long หมายถงึ ประกาศตัวแปรอาร์เรย์ ทม่ี สี มาชิก 10 ตวั แตล่ ะตวั แทนข้อมลู ชนดิ Long โดย ทีม่ ีขอบเขตลา่ งเท่ากบั 1 สมาชิกตัวแรกคือ x(1) ไปจนถงึ x(10) โดยทม่ี ีขอบเขตบนเทา่ กับ 10 เปน็ ต้น ค่าที่อยู่ในวงเล็บจะเรียกว่า ค่า Index ทาให้ตัวแปร x แต่ละตัวมคี วามแตกต่างกนั น่ันเอง และในการใช้งาน ขอให้ คุณใช้ตัวแปรอาร์เรย์ชนดิ นี้ ใหน้ ้อยทสี่ ุดเทา่ ทีจ่ ะเป็นไปได้ เนอื่ งจากวา่ เม่ือคุณประกาศตวั แปรอาร์เรย์แบบสแตติก แล้ว VB จะจองหน่วยความจาเทา่ กบั จานวนสมาชกิ ทนั ที ถึงแม้ว่า คุณจะไม่มีการใช้งานตัวแปรก็ตาม หรอื ใชง้ านตวั แปรไม่ครบทกุ ตัว คุณจะสญู เสียหน่วยความจาในสว่ นนี้ไป เช่น กรณขี า้ งต้น สมมติวา่ คุณใช้งานเพยี ง 3 ตวั แปร x(0), x(1) และ x(2) คณุ ตอ้ งเสียหนว่ ยความจาไป 5 ส่วน ซ่งึ ไมม่ ีความจาเปน็ แต่อย่างใด ขอให้คุณใชอ้ าร์เรย์ชนดิ ไดนามิก จะเหมาะสมกวา่ ตวั แปรอำรเ์ รย์แบบไดนำมิก (Dynamic Arrays) เป็นตวั แปรอารเ์ รย์ที่ใชส้ าหรับกล่มุ ของตัวแปร ทคี่ ุณไม่ทราบจานวนทีแ่ นน่ อน หรือคุณทราบแต่ต้องการใช้ อารเ์ รยแ์ บบไดนามิก เพื่อประหยัดทรพั ยากรระบบ โดยทีต่ ัวแปรแบบอารเ์ รย์ จะปรับขนาดจานวนสมาชกิ ให้เทา่ กบั

จานวนตัวแปรทคี่ ณุ ต้องการใช้ในขณะนั้น จะเหน็ ไดว้ า่ มีการใช้ทรพั ยากรระบบ เม่ือต้องการเท่านัน้ ซึ่งเป็นขอ้ ดีเป็น อย่างย่งิ มีรูปแบบการประกาศดังนี้ Dim intCnt( ) As Integer ขอ้ แตกตา่ งของตัวแปรอาร์เรย์แบบไดนามิก คือ คณุ ไม่ต้องระบุจานวนสมาชกิ ในวงเลบ็ จะเหน็ ได้วา่ มคี วามยดี หย่นุ มากกวา่ ตัวแปรอาร์เรย์แบบสแตตกิ แต่ถ้าในขณะรนั คุณตอ้ งการกาหนดจานวนสมาชิกทีแ่ นน่ อน คุณต้องใช้ คาส่ังดงั นี้ ReDim [Preserve] varname(subscripts) As type o คาส่ัง ReDim หมายถึง คุณต้องการกาหนดจานวนสมาชิกในตัวแปรอาร์เรยใ์ หม่ o คาสั่ง Preserve หมายถึง คุณตอ้ งการเก็บข้อมูลเดิม ท่ตี วั แปรอารเ์ รยด์ งั กลา่ วเก็บไว้ o ตวั แปร varname หมายถึง ตัวแปรอาร์เรย์ท่ีคุณต้องการกาหนดจานวนสมาชิก o ตัวแปร subscripts หมายถงึ ขนาดจานวนสมาชิกที่คุณต้องการ จะต้องเปน็ เลขจานวนเต็ม o ตัวแปร type หมายถึง ชนิดของข้อมูลท่ีคณุ ต้องการใหต้ ัวแปรอาร์เรยท์ ดแทน เชน่ สมมติว่าคุณประกาศตัวแปรอาร์เรย์ Dim intCnt( ) As Integer ต่อมาคุณต้องการระบขุ นาดจานวนสมาชิกของตวั แปรดังกลา่ ว ใหค้ ุณทาดังน้ี ReDim intCnt(10 ) As Integer แต่ถา้ คุณต้องการรักษาคา่ ท่ีตวั แปรอารเ์ รย์ intCnt ( ) เก็บไว้ด้วย คุณตอ้ งเพ่ิมเติมดังนี้ ReDim Preserve intCnt(10 ) As Integer จากกรณีทก่ี ลา่ วมา เป็นการสร้างตวั แปรอาร์เรย์แบบ 1 มติ ิ คณุ สามารถเพิ่มเติมให้ตัวแปรอารเ์ รยม์ ปี ระสิทธภิ าพ มากยิ่งขนึ้ ดว้ ยการใช้ ตัวแปรอารเ์ รย์แบบหลายมติ ิ กำรสร้ำงตวั แปรอำร์เรยม์ ำกกว่ำ 1 มติ ิ แมว้ ่าตวั แปรแบบอาร์เรย์ จะสามารถเกบ็ ค่าตวั แปรเป็นชุดไดแ้ ล้วกต็ าม คณุ ยงั สามารถขยายขีดความสามารถของ ตวั แปรอารเ์ รย์ได้อีก โดยที่ขอใหค้ ณุ จาลองตัวแปรอาร์เรย์ให้มลี กั ษณะช่องส่ีเหลี่ยมติดๆ กนั ถ้าคุณตอ้ งการใชง้ านห้อง ใด ท่หี ้องนั้นๆ จะมเี ลขทห่ี อ้ งอยู่ ดังรูป x(0) x(1) x(2) x(3) x(n) เมือ่ คุณต้องการใช้งานตัวแปรอารเ์ รยต์ วั ใด คุณจะใชค้ วามแตกต่างของค่า subscript เพ่อื อ้างถึงตวั แปรนน้ั ๆ กรณนี ้ีเป็นอาร์เรยช์ นิด 1 มติ ิ แต่ถา้ คุณต้องการเพม่ิ แถวเข้าไปอีก จะเกดิ อะไรขึ้น ดังรูป x(0) (0) x(0) (1) x(0) (2) x(0) (3) x(0) (n)

x(1) (0) x(1) (1) x(1) (2) x(1) (3) x(1) (n) ตวั อยา่ งขา้ งต้น คุณยงั สามารถเพมิ่ เตมิ มิติ (Dimentions) เข้าไปไดอ้ ีก โดยทค่ี า่ subscript ไม่มีทางซ้ากันได้ ดังนั้น จงึ เป็นแนวความคดิ ท่ีสร้างตวั แปรอาร์เรยท์ ี่มีมติ ทิ ่ี 2 ขึน้ มา ซงึ่ คุณต้องทาดังนี้ Dim x(1 To 5,1 To 4 ) As Long ข้อสังเกต จะใช้เคร่ืองหมาย , เพอื่ เพมิ่ มิติขน้ึ มา จากกรณีน้ี สามารถจาลองตัวแปรอาร์เรย์ 2 มติ ิไดด้ ังนี้ x(1,1) x(1,2) x(1,3) x(1,4) x(2,1) x(2,2) x(2,3) x(2,4) x(3,1) x(3,2) x(3,3) x(3,4) x(4,1) x(4,2) x(4,3) x(4,4) x(5,1) x(5,2) x(5,3) x(5,4) คุณจะไดต้ ัวแปรท้ังสนิ้ 20 ตวั ทมี่ คี วามแตกต่างกัน ซงึ่ คณุ อาจจะใชแ้ บบ Dim x(19 ) As Long ก็ได้ ไม่ผิดแต่ อย่างใด นน่ั คอื คุณจะได้ x(0) ถึง x(19) กำรใช้งำนคอนโทรลอำรเ์ รย์ ในการใช้งานตัวแปร เราสามารถใชง้ านในลักษณะแบบปกติ และใชง้ านแบบอาร์เรย์ ซง่ึ หมายถงึ การใช้งานตัว แปรชุด ท่ีมกี ารตั้งช่ือเหมือนกัน ต่างกันตรงที่ตวั แปรแต่ละตัวมีลาดบั (ค่า index) ต่างกัน ซงึ่ แนวความคดิ น้ีเอง สามารถนามาใช้กบั คอนโทรลได้เชน่ กัน น่นั คือ เราสามารถใช้งานคอนโทรลประเภทเดยี วกนั โดยที่ตั้งชื่อเหมือนกัน ตา่ งกันตรงทค่ี อนโทรลแต่ละตัว จะมีค่า index ท่ีทาให้คอนโทรลแตล่ ะตวั ไมเ่ หมือนกันน่ันเอง ซ่งึ กค็ ือ การใช้งาน คอนโทรลแบบอารเ์ รย์ (Control Array) ให้คุณทดลองโดยการวางคอนโทรล TextBox 1 ตวั บนฟอรม์ จากน้ันใหค้ ุณคลิ๊กท่ีตวั คอนโทรล TextBox เลือก คาส่ัง Copy แล้วเลอื กคาสั่ง Paste ซ่งึ คณุ จะได้พบกับไดอะล๊อกบ๊อกซ์ ดังรปู รปู ที่ 3-8 แสดงไดอะล๊อกบอ๊ กซย์ ืนยนั การใชง้ านคอนโทรลอาร์เรย์

ไดอะล๊อกบอ๊ กซ์ดังกล่าว เป็นการยืนยันวา่ คณุ ต้องการใช้งานคอนโทรล TextBox ในรูปแบบอารเ์ รย์ ซ่งึ เมอื่ คุณ ตอบ Yes แลว้ คอนโทรล TextBox จะถูกใช้งานในลกั ษณะคอนโทรลอาร์เรย์ รปู ที่ 3-9 แสดงการใชง้ านคอนโทรล TextBox แบบคอนโทรลอารเ์ รย์ จากรูปท่ี 3-9 คณุ จะพบว่า ชอื่ ของคอนโทรล TextBox ทงั้ 2 ตัวเหมอื นกัน ใหค้ ณุ สงั เกตได้ทีค่ ุณสมบตั ิ Name ในหนา้ ต่างคุณสมบตั ิ รวมถงึ ชื่อของคอนโทรล TextBox ที่ปรากฎอยใู่ นชอ่ ง list box ในหน้าต่างคณุ สมบัตดิ ว้ ย ซง่ึ จะ เหน็ วา่ มีตวั เลขอย่ใู นวงเลบ็ Text1(0) สาหรับคอนโทรล TextBox ตัวแรกและ Text1(1) สาหรับคอนโทรล TextBox ตัวที่ 2 ดงั รปู เมอ่ื คุณต้องการอา้ งองิ ถึงคอนโทรล TextBox แต่ละตัว จึงจาเป็นทจ่ี ะต้องมีการใส่ค่า index ประจาตวั ของ คอนโทรล TextBox แต่ละตวั เข้าไปดว้ ย เช่น ถ้าคุณตอ้ งการเพ่ิมข้อความเขา้ ไปท่คี อนโทรล TextBox ตวั ท่ี 1 ใหค้ ุณ เขียนโคด้ ดังน้ี Text1(0).Text = \"Your Text\" สาหรับการใช้งานคอนโทรลอาร์เรยน์ ี้ ถ้าคุณมกี ารแก้ไขคณุ สมบัติตา่ งๆ ของคอนโทรลต้นแบบแล้ว คุณยังสามารถ copy คุณสมบัตติ า่ งๆ ที่คณุ ได้แก้ไขไวก้ ับคอนโทรลต้นแบบน้ันๆ นามาใชก้ ับคอนโทรลอารเ์ รย์ตัวตอ่ ๆ ไปได้อีกดว้ ย ซ่งึ จะชว่ ยใหค้ ณุ สามารถแก้ไขคุณสมบตั ิคลา้ ยๆ กนั ได้อย่างรวดเร็วอกี ด้วย กำรสรำ้ งชนดิ ของตัวแปรขึน้ ใช้เอง (User-defined data type) นอกจากชนิดของข้อมลู ท่ี VB สนับสนนุ แล้ว คณุ ยงั สามารถนาชนิดของข้อมูลพนื้ ฐานดงั กลา่ วทัง้ หมด มาสร้างเปน็ ชนิดขอ้ มลู ตามท่คี ุณต้องการไดอ้ ีกด้วย โดยมรี ปู แบบดงั น้ี [Private | Public] Type varname elementname [([subscripts])] As type [elementname [([subscripts])] As type] ... End Type ความหมายของแต่ละสว่ นมีดังน้ี

คาสัง่ รายละเอยี ด Public (Optional) หมายถงึ กาหนดใหช้ นดิ ของข้อมลู ทสี่ รา้ งขึ้นมา สามารถใช้ได้ทง้ั โปรเจก็ ต์ ทุกโพรซเี ดอร์ ทกุ โมดูล Private (Optional) หมายถึง กาหนดใหช้ นิดของขอ้ มูลทสี่ รา้ งข้นึ มา สามารถใช้ไดเ้ ฉพาะโมดูลท่ีประกาศเท่านนั้ ซงึ่ เปน็ คา่ default คุณจะใส่หรอื ไม่ใสก่ ไ็ ด้ varname คุณต้องใส่ ซง่ึ เปน็ ช่อื ของชนิดข้อมลู ท่ีคณุ กาหนดขน้ึ มาใหม่ โดยสร้างจากชนิดข้อมลู พน้ื ฐานท่ี VB สนับสนุน elementname ช่อื ของตัวแปร ซงึ่ เปน็ สว่ นหนึง่ ของชนิดขอ้ มลู ที่คุณสรา้ งข้ึนมา subscripts คุณยงั สามารถสรา้ งตวั แปรแบบอาร์เรย์ ทีเ่ ปน็ สว่ นหน่ึงของชนดิ ข้อมลู ที่คณุ กาหนดมาได้อีกดว้ ย type ชนิดของข้อมลู พื้นฐานแตล่ ะตัว ที่เปน็ องค์ประกอบของขอ้ มูลท่คี ณุ สรา้ งขึน้ มา เชน่ Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String (ไม่จากดั ความ ยาว), String * length (จากัดความยาว), Object, Variant รวมถงึ อาร์เรย์ด้วย ตัวอย่างเช่น Type Student FirstName As String LastName As String ID As Integer End Type เปน็ การสรา้ งชนดิ ข้อมูลข้ึนมาใหม่ โดยใหช้ ่ือวา่ Student เมือ่ คุณต้องการใชง้ านตัวแปรชนดิ น้ี คณุ ตอ้ งประกาศดังน้ี Dim Input As Student สง่ ผลให้ตวั แปร Input มีโครงสรา้ งเหมอื นกับชนิดขอ้ มลู Student และเม่ือคณุ ต้องการอ้างถงึ ตวั แปรตา่ งๆ ที่อยู่ใน โครงสรา้ งนี้ ให้คณุ ทาดังน้ี Input.FirstName = \"Suphachai\" Input.LastName = \"Somphanit\" Input.ID = 12345678

คุณจะต้องระบุข้อมูลให้ตรงกบั ชนดิ ของข้อมลู แตล่ ะตวั ในโครงสรา้ งนั้นๆ ดว้ ย ซง่ึ ชนดิ ของข้อมลู ตา่ งๆ ทีป่ ระกอบ ข้ึนมา จะมีขอบเขต และความสามารถ เหมือนกบั การใช้งานชนิดของข้อมูลตามปกติ กำรประกำศค่ำคงท่ี (Constant) ในการประกาศค่าคงที่ คุณตอ้ งใชค้ าส่ัง Const เพอื่ สร้างคา่ คงที่ โดยปกตแิ ลว้ จะใช้ค่าคงที่เมอ่ื คณุ ทราบจานวนที่ แน่นอน และค่าดังกลา่ ว คุณไมต่ อ้ งการใหม้ ีการเปลย่ี นแปลง ถ้ามกี ารเปลี่ยนแปลงคา่ คงที่จะเกิดข้อผดิ พลาด มี รูปแบบการประกาศดงั นี้ [Public | Private] Const constname [As type] = expression ความหมายของแต่ละสว่ นมีดังน้ี คาสัง่ รายละเอยี ด Public Optional หมายถึง ให้ค่าคงท่สี ามารถเรียกใชง้ านได้ ทุกฟอร์ม ทุกโพรซเี ดอร์ คุณต้องประกาศในไฟลโ์ มดูลเท่านนั้ ซงึ่ จะมคี วามหมายเช่นเดียวกับ ตัวแปร ระดบั Public หรือระดับโมดูลน่นั เอง Private Optional หมายถึง ใหค้ ่าคงทส่ี ามารถใช้งานได้เฉพาะในฟอรม์ หรือโมดลู ท่ี ประกาศเท่านัน้ ซึ่งเป็นค่าปกติท่ี VB ตง้ั ไว้อยู่แลว้ Const คาสงั่ น้ี หมายถงึ เป็นการเร่ิมต้นสร้างคา่ คงที่ constname ชอ่ื คา่ คงที่ คุณสามารถตัง้ ชื่อได้อยา่ งอิสระ โดยที่ไมผ่ ดิ กฎการตั้งชอื่ ของ VB type Optional เปน็ การกาหนดชนิดของคา่ คงท่ี ซงึ่ อาจเป็น Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String, หรือ Variant คณุ สามารถกาหนดชนิดของค่าคงท่ี โดยใชค้ าส่งั น้ีร่วมดว้ ยก็ได้ expression ค่าคงท่ี ทค่ี ุณตอ้ งการกาหนดให้กับ constname เช่น Const Vat = 0.07 Public Const MyName = \"Suphachai\" Private Const cntyear As Integer = 12 Const MyStr = \"Hello World\", mgpa As Double = 4.00 ตวั ดำเนินกำรใน VB 6.0 (Operators)

ตวั ดาเนนิ การ คือ การนาข้อมลู อยา่ งน้อยที่สุด 2 ตวั มากระทาอย่างใดอย่างหน่งึ เช่น บวกกัน ลบกัน เชอื่ มต่อกนั เปรียบเทียบกนั ทดสอบค่ากัน เป็นตน้ ซึง่ สามารถแบ่งได้ 4 ประเภท ดงั น้ี ตวั ดำเนนิ กำรดำ้ นคณิตศำสตร์ (Arithmatic Operators) เปน็ ตัวดาเนินการที่ใช้สาหรับ บวก ลบ คูณ หาร ตัวเลข มรี ายละเอยี ดดงั นี้ ชื่อตวั ลกั ษณะ ตวั อย่าง ผลลัพธ์ ดาเนินการ ตวั 35 ดาเนินการ 5 20 การบวก + 15+20 3 3 การลบ - 20-15 1 การคณู * 5*4 4 การหาร / 9/3 -5 การหาร \\ 10\\3 จานวนเตม็ การ Mod 10 Mod 3 Modulo การยก ^ 2^2 กาลงั การเปลย่ี น - 5 เคร่ืองหมาย รำยละเอยี ดของตวั ดำเนินกำรทำงคณติ ศำสตร์ การบวก, ลบ, คณู , หาร เปน็ ไปตามกฏทางคณติ ศาสตร์ ทีน่ ่าสนใจคือ o การหารจานวนเต็ม หมายถึง จะเอาแตเ่ ฉพาะเลขที่เปน็ จานวนเต็มเท่านนั้ ส่วนเศษ จะปัดทิ้ง เช่น 10\\6=1.6666 แต่จะไดผ้ ลลัพธ์เท่ากับ 1 แมว้ า่ .6666 จะเกินคร่งึ ก็ตาม ไม่มีการปดั เศษแต่อย่างใด o การ Mod หมายถึง จะเอาแต่เศษที่เหลืออยู่จากการ Mod เชน่ 10 Mod 3 =1 เนอ่ื งจาก 10 หาร 3 ไมล่ งตัว เหลือเศษ 1 จึงไดผ้ ลลัพธ์ 1, 20 Mod 6 =2 (เหลือเศษ 2 น่ันเอง)

ตวั ดำเนนิ กำรทำงด้ำนตรรกะ (Logical Operator) เป็นตวั ดาเนินการทใ่ี หผ้ ลลพั ธ์แค่ 2 คา่ เท่าน้ัน คือ True และ False มักจะใชใ้ นการตรวจสอบเงอื่ นไข หรอื สรา้ ง เงือ่ นไขขึ้นมาเพื่อทดสอบกรณีต่างๆ เสมอในการเขียนแอพพลเิ คชัน มรี ายละเอยี ดดงั น้ี A B And Or Xor Eqv Imp Not A True True True True False True True False True False False True True False False False False True False True True False True True False False False False False True True True รำยละเอยี ดของตวั ดำเนินกำรทำงตรรกะ o ตัวดำเนินกำร And จะมีกรณเี ดยี วที่เปน็ จรงิ ก็คือ ทั้ง 2 พจน์ต้องเปน็ จริง o ตัวดำเนินกำร Or จะมีกรณีเดยี วทเ่ี ป็นเทจ็ กค็ ือ ทง้ั 2 พจนต์ อ้ งเปน็ เท็จ o ตวั ดำเนนิ กำร Xor ถ้า 2 พจนม์ คี ่าต่างกนั จะได้ผลลัพธ์เป็นจรงิ o ตัวดำเนินกำร Eqv ถ้า 2 พจน์มคี า่ เหมือนกนั จะได้ผลลัพธเ์ ป็นจรงิ o ตัวดำเนินกำร Imp จะมีกรณเี ดียวที่มคี ่าเปน็ เท็จคือ พจน์หน้าเปน็ จรงิ พจนห์ ลงั เป็นเท็จ o ตวั ดำเนนิ กำร Not เปน็ การสลบั ค่าของพจน์ เช่น ถา้ A เป็นจริง จะได้ผลลัพธเ์ ปน็ เท็จ ตัวดำเนินกำรทำงดำ้ นกำรเปรยี บเทยี บ (Comparison Operators) หมายถงึ การนาพจนต์ งั้ แต่ 2 พจน์ขน้ึ ไป มาเปรียบเทยี บกนั เพ่ือทดสอบเง่ือนไข หรือสรา้ งเง่ือนไข มักจะใชค้ ู่กับ ตวั ดาเนนิ การทางด้านตรรกะ เพอ่ื ตรวจสอบเง่ือนไขต่างๆ เสมอ มีรายละเอยี ดดังน้ี ตวั ชื่อตวั ดาเนินการ ดาเนินการ < น้อยกวา่ > มากกว่า <= นอ้ ยกวา่ หรอื เท่ากบั >= มากกวา่ หรือเท่ากับ

= เทา่ กบั <> ไม่เท่ากับ ตวั ดำเนนิ กำรทำงดำ้ นกำรเชอื่ มข้อควำม (Concentration Operators) ถา้ โดยตามหน้าที่แลว้ จะเปน็ การเช่ือมขอ้ ความ 2 ขอ้ ความเขา้ ด้วยกนั แต่ยังมีกรณียกเว้นท่ีจะเปน็ การบวกกัน ของพจน์ 2 พจน์ เข้าด้วยกัน ซง่ึ ขน้ึ อยู่กับชนิดของพจน์ท่ีจะมากระทากัน สามารถแยกออกเปน็ กรณี ไดด้ ังนี้ ตวั กรณี ตวั อย่าง ผลลพั ธ์ ดาเนนิ การ \"Visual Basic 6.0\" + String + String \"Visual\"+\"Basic 6.0\" \"Visual Basic 6.0\" & String & String \"Visual\" & \"Basic 6.0\" 26 206 + String(numeric)+numeric \"20\"+6 & String(numeric)&numeric \"20\"+6 3.3 คำ่ คงท่ี (Constant)ในภาษาทางโปรแกรมมง่ิ จะมีการใช้งานการเกบ็ ข้อมลู อีกรปู แบบหนึ่งทค่ี ลา้ ยตัวแปร แต่ แตกต่างกันที่ การเกบ็ ขอ้ มูลในรปู แบบนี้จะไมส่ ามารถเปล่ียนแปลงคา่ ไดแ้ บบตวั แปรตามทไี่ ด้อธิบายมา ซึ่งการเกบ็ ค่า รปู แบบน้ีเรยี กว่า คา่ คงท่ี หรือ Constant ซึ่งเหมาะกบั การเก็บข้อมลู ท่ีไม่ต้องการเปล่ยี นแปลงค่าสามารถประกาศใช้ งานไดด้ ้วยการวาง Keyword วา่ Const ไวห้ น้าช่ือ และใช้ As ในการกาหนดประเภทข้อมูล Ex.5 Const vat As Byte = 7 vat = 10 'หากมีการเปลยี่ นแปลงค่าจะเกดิ การ Error' 3.4 ตวั แปรแบบชดุ หรือตวั แปรอำรเ์ รย์ (Array) ตวั แปรอำรเ์ รย์ เปน็ กลมุ่ ของตวั แปรทีค่ ุณประกาศข้ึนมา โดยใชช้ อ่ื ของตวั แปรแต่ละตวั เหมอื นกนั ข้อแตกต่างของตัวแปรแต่ละตวั ชนดิ นี้มีประโยชนใ์ นแงข่ องการเกบ็ ข้อมลู ทค่ี ล้ายๆ กนั เป็นชุดๆ โดยที่คณุ ไมต่ ้องห่วงเร่อื งการตงั้ ช่ือตัวแปรแต่ละตัว เพราะมีช่ือเหม การเรยี กใชง้ านตวั แปรเหลา่ น้ีงา่ ย และสะดวกกวา่ ซึ่งตวั แปรท่ีประกาศเปน็ แบบอาร์เรย์นี้ แตล่ ะตัวจะเรียกว่า สมาชิกตวั ที.่ ... ม

Dim intCnt( ) As Integer จะเหน็ ได้ว่า มีความคล้ายกบั การประกาศตวั แปรแบบปกติ ท่ีเพิ่มข้ึนมาก็คือ เครื่องหมายวงเล็บต่อท้ายชอ่ื ตวั แปร ซ่ึงหมายถงึ คณุ ต้องการใช้งาน ตวั แปรแบบอาร์เรย์ ซง่ึ สมาชิกแตล่ ะตัวในตวั แปรอารเ์ รย์ จะตอ้ งเปน็ ข้อมูลชนดิ เลข จานวนเตม็ Integer เท่าน้ัน ตวั แปรอาร์เรย์มี 2 ชนิด คือ 1.ตวั แปรอารเ์ รย์แบบสแตติก (Static Arrays) 2.ตวั แปรอารเ์ รย์แบบไดนามิก (Dynamic Arrays) ตัวแปรอำร์เรยแ์ บบสแตตกิ (Static Arrays) เปน็ อารเ์ รย์ท่มี จี านวนสมาชิกทแี่ น่นอน ซ่ึงคุณตอ้ งระบุจานวนสมาชิก โดยใชเ้ ลขจานวนเตม็ เขา้ ไปในวงเลบ็ ดว้ ย ขอให้คุณจาลองหน่วยความจาในเครือ่ งว่า เป็นห้องๆ ตดิ กัน แตล่ ะห้องสามารถเก็บข้อมูลได้ 1 ตัวอกั ษร VB จะจอง จานวนหอ้ งเพ่ือเก็บขอ้ มูล ให้เท่ากับจานวนตวั แปรอาร์เรย์ที่คณุ ระบุไว้ เชน่ Dim x(5 ) As Integer หมายถึง ตวั แปร x เป็นตวั แปรอารเ์ รย์ชนิดสแตติก ท่ีใชเ้ กบ็ เลขจานวนเตม็ Integer โดยที่มี สมาชกิ ท้ังสน้ิ 5 ตวั การใชง้ านตวั แปรแต่ละตวั โดยการใช้ช่ือ x(0) เปน็ ตัวท่ี 1 หรือเรยี กอีกอยา่ งหนึ่งวา่ ขอบเขต

ล่าง ไปจนถงึ x(4) เปน็ ตัวท่ี 5 หรือเรียกอีกอย่างหนึ่งวา่ ขอบเขตบน ซ่ึงจะมคี วามสาคญั เปน็ อย่างย่งิ ในการใช้งานตัว แปรแบบอารเ์ รย์ โดยปกตแิ ล้วสมาชกิ ตัวแรกของตัวแปรแบบอารเ์ รย์ จะมีลาดับที่ 0 เสมอ Dim x(1 To 10 ) As Long หมายถึง ประกาศตวั แปรอาร์เรย์ ท่มี สี มาชิก 10 ตวั แตล่ ะตวั แทนขอ้ มลู ชนิด Long โดยทม่ี ขี อบเขตล่างเท่ากบั 1 สมาชกิ ตัวแรกคือ x(1) ไปจนถงึ x(10) โดยทมี่ ีขอบเขตบนเท่ากับ 10 เปน็ ต้น คา่ ทอี่ ยู่ในวงเล็บจะเรยี กว่า ค่า Index ทาให้ตวั แปร x แต่ละตัวมีความแตกตา่ งกนั น่ันเอง และในการใช้งาน ขอให้คณุ ใชต้ ัวแปรอาร์เรย์ชนดิ น้ี ใหน้ ้อยทส่ี ดุ เท่าทจ่ี ะเปน็ ไปได้ เนือ่ งจากวา่ เมื่อคณุ ประกาศตวั แปรอารเ์ รยแ์ บบสแต ติกแล้ว VB จะจองหน่วยความจาเท่ากับจานวนสมาชิกทันที ถึงแม้ว่า คุณจะไม่มีการใชง้ านตัวแปรกต็ าม หรือใชง้ าน ตวั แปรไม่ครบทกุ ตวั คุณจะสูญเสียหนว่ ยความจาในส่วนนไี้ ป เชน่ กรณีขา้ งตน้ สมมตวิ า่ คุณใชง้ านเพยี ง 3 ตัวแปร x(0), x(1) และ x(2) คุณต้องเสียหนว่ ยความจาไป 5 สว่ น ซง่ึ ไมม่ ีความจาเปน็ แตอ่ ยา่ งใด ขอให้คุณใช้อารเ์ รย์ชนดิ ได นามิกจะเหมาะสมกวา่ ตวั แปรอำร์เรย์แบบไดนำมกิ (Dynamic Arrays) เป็นตัวแปรอารเ์ รยท์ ี่ใชส้ าหรับกล่มุ ของตวั แปร ที่คุณไม่ทราบจานวนท่แี นน่ อน หรือคุณทราบแต่ต้องการใช้ อาร์เรย์แบบไดนามิก เพื่อประหยดั ทรพั ยากรระบบ โดยที่ตัวแปรแบบอารเ์ รย์ จะปรับขนาดจานวนสมาชกิ ใหเ้ ท่ากับ จานวนตวั แปรทีค่ ุณต้องการใชใ้ นขณะนน้ั จะเหน็ ได้ว่า มีการใช้ทรัพยากรระบบ เม่ือต้องการเท่านน้ั ซึง่ เป็นข้อดเี ปน็ อย่างย่ิง มีรูปแบบการประกาศดงั น้ี Dim intCnt( ) As Integer ข้อแตกตา่ งของตัวแปรอารเ์ รยแ์ บบไดนามกิ คือ คณุ ไม่ต้องระบจุ านวนสมาชิกในวงเลบ็ จะเหน็ ได้วา่ มคี วามยีด หยุ่นมากกว่า ตัวแปรอารเ์ รย์แบบสแตติก แต่ถา้ ในขณะรัน คณุ ต้องการกาหนดจานวนสมาชกิ ทแ่ี น่นอน คณุ ตอ้ งใช้ คาส่ังดังนี้ ReDim [Preserve] varname(subscripts) As type o คาสัง่ ReDim หมายถงึ คุณต้องการกาหนดจานวนสมาชกิ ในตัวแปรอารเ์ รย์ใหม่ o คาส่ัง Preserve หมายถึง คุณตอ้ งการเกบ็ ข้อมูลเดมิ ที่ตัวแปรอารเ์ รย์ดงั กล่าวเกบ็ ไว้ o ตัวแปร varname หมายถึง ตวั แปรอารเ์ รยท์ ่ีคณุ ต้องการกาหนดจานวนสมาชิก o ตวั แปร subscripts หมายถึง ขนาดจานวนสมาชกิ ที่คุณต้องการ จะต้องเป็นเลขจานวนเต็ม o ตวั แปร type หมายถึง ชนดิ ของข้อมลู ท่ีคุณต้องการใหต้ วั แปรอารเ์ รย์ทดแทน เชน่ 3.5 กำรใช้งำนตัวแปร กำรใชง้ ำนตัวแปรแบบใช้สัญลักษณ์พเิ ศษกำกับ คณุ ยงั สามารถใช้งานตัวแปรได้ โดยการใชส้ ัญลกั ษณพ์ ิเศษต่อทา้ ยตัวแปรนนั้ ๆ ให้คุณดูตารางต่อไปนี้

ชนดิ ของ สัญลักษณ์พิเศษ ข้อมูล Integer % Long & Single ! Double # Currency @ String $ การประกาศใชง้ านตัวแปรแบบปกติ ถ้าคณุ ต้องการตัวแปรแบบ Integer คุณจะต้องประกาศ ดังนี้ Dim x As Integer หมายถึง ให้ตัวแปร x เก็บข้อมลู ชนิดเลขจานวนเต็ม แตค่ ุณสามารถใช้สญั ลักษณ์พเิ ศษต่อทา้ ยตวั แปรเพอื่ กาหนดใหต้ ัวแปรแทนชนดิ ของข้อมูลที่คุณต้องการได้ ซึ่ง ถา้ คุณใช้วิธนี ้ี คณุ ตอ้ งใชต้ ลอดท้งั โพรซเี ดอร์ เช่น Dim x% หมายถงึ ใหต้ วั แปร x เก็บข้อมลู ชนดิ เลขจานวนเต็ม Integer เชน่ กนั Dim x& หมายถึง ให้ตัวแปร x เกบ็ ข้อมลู ชนิดเลขจานวนเตม็ Long Dim x! หมายถึง ให้ตวั แปร x เกบ็ ข้อมลู ชนิดเลขทศนิยมแบบ Single (ความละเอียดต่า) Dim x# หมายถึง ให้ตัวแปร x เกบ็ ข้อมูลชนิดเลขทศนยิ มแบบ Double (ความละเอยี ดสูง) Dim x@ หมายถงึ ใหต้ วั แปร x เก็บข้อมูลชนดิ เลขทางการเงิน Currency Dim x$ หมายถงึ ใหต้ วั แปร x เกบ็ ข้อมูลชนดิ ข้อความ String การประกาศตัวแปรแบบปกติ หรอื ประกาศแบบใชส้ ญั ลักษณ์พิเศษต่อทา้ ย มีผลเหมือนกัน ทุกประการ คุณสามารถเลือกใชไ้ ดอ้ ย่างอสิ ระ ขอบเขตของตวั แปร (Scope of Variable) ตัวแปรทค่ี ณุ ต้องการใช้งานในแอพพลเิ คชันหนึ่งๆ จะมีมากมายหลายชนิด สงิ่ หน่งึ ท่ีคณุ ควรทราบกค็ ือ ตวั แปรแตล่ ะตวั มีขอบเขต การใชง้ านเป็นอย่างไร หวั ข้อนจ้ี ะเป็นการอธบิ าย ข้อจากัดและขอบเขตของตัวแปร ใน VB สามารถแบ่งขอบเขตตัวแปรได้ 2 ประเภท คือ

1.ตัวแปรแบบ Local 2.ตัวแปรแบบ Public 3.6 เคร่อื งหมำยดำเนนิ กำรทำงคณิตศำสตร์ จากท่ีไดท้ าการศกึ ษา เรื่องตัวแปรกันมาแล้ว ต่อมาเป็นการทาความเข้าใจเกี่ยวกับสัญลกั ษณห์ รือตัวดาเนนิ การ ทางคณิตศาสตร์ตา่ งๆ ท่ีใช้งานรว่ มกบั ขอ้ มูลในรปู แบบของตวั เลข (Arithmetic Operators) กนั ดงั นี้


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook