บทความ

กำลังแสดงโพสต์จาก เมษายน, 2012

การป้องกัน VBA Code ของ MS Access

รูปภาพ
ปัญหา

MS Access 2007/2010 เมื่อ compile โดยจัดทำเป็น accde แล้วมีปัญหาเมื่อนำไปใช้กับ Windows ที่ต่างรุ่นกัน เช่นทำจาก Vista / Office 2010 เมื่อนำไปใช้กับ Windows 7 / Office 2010 หรือ Windows XP / Office 2010 มีปัญหา เปิดไม่ได้ บอกว่าไม่รู้จัก ทั้ง ๆ ที่เป็น Office 2010 ด้วยกันเอง

การแก้ไข

ไม่ต้อง compile เป็น accde แต่ ยังคงใช้เป็น accdb เหมือนเดิม แต่ใส่รหัสที่โค้ด เพื่อไม่ให้เปิดดูได้ เพราะถ้าเปิดได้ และแก้ไขโค้ด ก็จะทำให้โปรแกรมที่เขียน ทำงานไม่ได้ตามที่ต้องการ หรืออาจจะไม่ทำงานเลย

วิธีการใส่รหัสเพื่อไม่ให้เปิดดูโค้ด ทำดังนี้
เปิดหน้าจอ VBA (กด Atl + F11)ไปที่ Tools > Database Properties ...จะเปิดหน้าจอข้างล่าง

คลิกที่แถบ Protectionพิมพ์รหัสตามต้องการเมื่อปิดและจะเข้าไปแก้ไขโค้ด ต้องใส่รหัส

stroke โรคหลอดเลือดสมอง อัมพาต อัมพฤกษ์

รูปภาพ
Stroke มีชื่อเรียกต่าง ๆ กัน เช่น โรคหลอดเลือดสมอง อัมพาต อัมพฤกษ์ เส้นเลือดอุดตัน เป็นต้น
Stroke เป็นโรคพบได้บ่อยโรคหนึ่ง ในประเทศที่เจริญแล้ว โรคนี้เป็นสาเหตุการเสียชีวิตเป็นอันดับสองรองจากโรคหัวใจ เป็นโรคพบได้บ่อยในอายุตั้งแต่ 45 ปีขึ้นไป (95%ของผู้ป่วยทั้งหมด) โดยประมาณสองในสามของผู้ป่วยมีอายุมากกว่า 65 ปี ทั้งนี้ พบในผู้ชายบ่อยกว่าในผู้หญิงประมาณ 1.5 เท่า

Stroke เกิดจากอะไร?


Stroke มีสาเหตุเกิดจาก สมองขาดเลือดทันทีภายในระยะ เวลาเป็นนาทีหรือ ชั่วโมง ซึ่งเกิดได้จาก 2 สาเหตุสำคัญ คือ
หลอดเลือดแดงสมองอุดตัน (ischemic stroke) หลอดเลือดแดงสมองแตก (hemorrhagic stroke)
โรคอัมพาต โรคอัมพฤกษ์มีอาการอย่างไร?

อาการจากโรคอัมพาต โรคอัมพฤกษ์เป็นอาการที่เกิดทันที เป็น นาที หรือ ชั่วโมง โดยอาการขึ้นกับตำแหน่งสมองส่วนที่ขาดเลือด ซึ่งที่พบบ่อย ได้แก่ แขน ขา ด้านเดียวกันอ่อนแรงทันที แขน ขาด้านเดียวกัน ใบหน้า ชา สับสน พูดไม่ชัด หรือ พูดไม่ได้ อาจมีตาพร่า มองเห็นภาพไม่ชัด หรือ เห็นภาพเพียงบางส่วน หรือ เห็นภาพได้แคบลง อาจหายใจเหนื่อยหอบ ติดขัด มึนงง วิงเวียน ทรงตัวไม่ได้ ปวดศีรษะอย่างมากทันที ถ้าเกิดจาก…

การย้ายแถว ใน Excel

รูปภาพ
การย้ายแถวใน Excel ของง่าย ๆ แต่บางทีนึกไม่ถึงเหมือนกัน
จากภาพข้างล่าง ต้องการย้ายแถวที่ 3 ไปตำแหน่งอื่น ขั้นแรกลองเลือกทั้งแถว และไปที่เส้นขอบ
จากนั้นลากไปไว้ที่อื่น พอปล่อยเมาส์ Excel ตั้งคำถามว่า จะให้ลบของเดิมหรือไม่
ถ้าต้องการลบของเดิม แล้วใช้ของใหม่แทนที่คงไม่ยาก แต่ถ้าต้องการแทรก โดยเลื่อนข้อมูลเดิมลงไปอีก 1 แถว จะทำอย่างไร

วิธีการ
เลือกทั้งแถว
คลิกขวาที่เส้นลากไปวางในตำแหน่งแถวที่ต้องการปล่อยเมาส์ จะมีคำถาม ให้เลือก Shift Down and Move
จะได้ข้อมูลใหม่ ดังภาพ ซึ่งจะเห็นว่า แถวที่ 3 มาแทรกอยู่ระหว่างแถวที่ 9 และ แถวที่ 10 โดยที่ข้อมูลเดิมยังอยู่ครบ


ไฟโตนิวเทรียนท์ (phytonutrients) สารอาหารที่สำคัญจากพืช

ต้นไม้มีสารชนิดหนึ่งที่เรียกว่า ไฟโตนิวเทรียนท์ (phytonutrients) ช่วยปกป้องพืชให้พ้นจากภัยรอบด้าน เช่น จากเชื้อโรคต่าง ๆ จากการบาดเจ็บ จากแมลง จากความร้อนของดวงอาทิตย์ จากรังสีอุลตร้าไวโอเล็ต จากสารพิษ ตลอดจนมลพิษต่าง ๆ ทั้ง ในน้ำ ในดิน และในอากาศ ว่าง่าย ๆ คือ ไฟโตนิวเทรียนท์ เป็นภูมิคุ้มกันของพืช ก็ว่าได้

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

ไฟโตนิวเทรียนท์ เป็นสารที่ทำให้พืชผัก ผลไม้มีสีต่าง ๆ พืชผัก ผลไม้ต่างสีกัน มีไฟโตนิวเทรียนท์ ชนิดต่างกัน ซึ่งแต่ละชนิดก็จะทำหน้าที่แตกต่างกันไปด้วย เพราะฉะนั้น การกินผักผลไม้เพียงอย่างใดอย่างหนึ่งจึงยังไม่พอ ต้องกินให้ครบทุกสี ผักและผลไม้สีต่างกัน ให้ประโยชน์ต่างกัน

อาหารที่มีไฟโตนิวเทรียนท์ และตัวต้านอนุมูลอิสระ มีหลา…

การใช้ 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
        ..........................…

การแยกคำนำหน้าชื่อ ชื่อ และนามสกุล ไว้คนละเซลล์ ด้วย Excel VBA

รูปภาพ
ใน Excel ถ้าต้องการแยกคำนำหน้าชื่อ ชื่อจริง และนามสกุล ออกจากกัน ถ้าจะใช้สูตรที่มีในแผ่นงานของ Excel ก็ต้องสร้างเงื่อนไขจำนวนมาก ซึ่งไม่สะดวก เพราะคำนำหน้าชื่อของไทยมีจำนวนมาก เช่น นาย นาง ด.ช., ม.ล., ดร. เป็นต้น และถ้ายิ่งมีการใช้ยศทหาร ตำรวจด้วยแล้ว การตรวจสอบด้วยเงื่อนไขจากสูตร จะทำได้ไม่สะดวกเลย

อย่างนี้ จำเป็นต้องใช้ VBA ช่วย จะสามารถทำได้สะดวกมากกว่า อย่างไรก็ตาม ต้องมีเงื่อนไขว่า ชื่อและนามสกุลต้องเขียนแยกกัน โดยมีช่องว่าง เพราะใน VBA ข้างล่างนี้ ใช้ช่องว่างเป็นหลักในการแยกชื่อ และนามสกุล

ตัวอย่าง

ให้ท่านแยกคำนำหน้าชื่อ ชื่อ และนามสกุล จากข้อมูลข้างล่างนี้ ออกเป็นคนละเซลล์กัน


วิธีการ มีดังนี้
เปิดหน้าต่าง VBA ของ Excel โดยกดปุ่ม Alt + F11ไปที่เมนู Insert > Module (แทรก > โมดูล) คลิกที่ Module1 และพิมพ์โค้ดข้างล่างนี้

Function getTitle(thisFullName As String) As String
Dim Titles As Variant
Dim myCount As Integer

' สร้างตัวแปร Array ชื่อ Titles เพื่อเก็บคำนำหน้าชื่อ สามารถเพิ่มได้อีกไม่จำกัด
' ต้องให้ นางสาว มาก่อน นาง มิฉะนั้นจะตรวจสอบนางสาวไม่ได้

Titles = Array(&q…

การใช้ INDEX และ MATCH ของ Excel

รูปภาพ
INDEX ใช้สำหรับแสดงข้อมูล ในช่วงที่ระบุ
MATCH ใช้ค้นหาตำแหน่ง ในช่วงข้อมูลที่ระบุ ตามเงื่อนไขที่กำหนด

รูปแบบการใช้

INDEX( array, row_num, [ column_num ] )
     array  คือช่วงข้อมูลที่กำหนด
     row_num คือ ตำแหน่งเริ่มต้นลงมากี่แถว ในช่วงที่กำหนด
     column_num คือ ตำแหน่งถัดเข้าไปกี่คอลัมน์ ในช่วงที่กำหนด

MATCH( lookup_value, lookup_array, match_type )
     lookup_value คือ ข้อมูลที่ต้องการค้นหา
     lookup_array คือ ช่วงข้อมูลที่กำหนดให้ค้นหาภายในนี้
     match_type คือ ลักษณะการค้นหา มีค่าได้ 3 ค่า คือ 0, +1 และ -1
          ถ้าเป็น 0 หมายถึงต้องเหมือนกับข้อมูลที่ต้องการค้นหา
          ถ้าเป็น +1 หมายถึง ให้หาข้อมูลที่มากที่สุด ซี่งน้อยกว่าหรือเท่ากับข้อมูลที่กำหนด และต้องเรียงข้อมูลจากน้อยไปหามาก เช่น -2 -1 0 1 2 3 หรือ ก - ฮ หรือ A-Z
          ถ้าเป็น -1  ให้หาข้อมูลที่น้อยน้อยที่สุด ซึ่งมากกว่าหรือเท่ากับข้อมูลที่กำหนด และต้องเรียงข้อมูลจากมากไปหาน้อย     

เมื่อนำมาใช้ด้วยกัน ทำให้สามารถค้นหาข้อมูลได้ โดยการหาตำแหน่ง ด้วย MATCH เสียก่อน จากนั้น จึงนำมาแสดงด้วยคำสั่ง INDEX

ตัว…

การใช้คำสั่ง OFFSET ของ Excel กำหนดช่วงข้อมูล

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

OFFSET( reference,rows,cols,height,width)

reference:คือตำแหน่งที่ใช้อ้างอิง เสมือนหนึ่งปักหมุดแล้วใช้อ้างอิงจากจุดนี้ไปrows:คือตำแหน่งเริ่มต้นช่วงข้อมูลว่า จะอยู่เหนือ หรือต่ำกว่าจุดอ้างอิง จำนวนกี่แถว ถ้าเป็น + คือต่ำกว่า และค่าเป็น - คือตำแหน่งที่อยู่เหนือขึ้นไปcolsคือตำแหน่งเริ่มต้นช่วงข้อมูลว่าจะเริ่มห่างจากจุดอ้างอิงไปทางซ้าย หรือทางขวา กี่คอลัมน์ ถ้าเป็น + คือทางขวา และค่าเป็น - คือทางซ้ายheight:ช่วงความสูง คือจำนวนแถวว่าจะให้มีความสูงในส่วนที่เลือกกี่แถวwidth:ช่วงความกว้างของบริเวณที่จะเลือกว่าจะให้กว้างกี่คอลัมน์
ตัวอย่าง
ให้หาผลรวมของจำนวนข้างล่างนี้ โดยกำหนดให้สามารถเพิ่มข้อมูลได้อีก และให้ปรับผลรวมโดยอัตโนมัติ


จากภาพ เซลล์ C2 คือผลรวมของตัวเลขในเซลล์ C4 ถึง C6 และถ้ามีการเพิ่มข้อมูลในเซลล์ C7 C8 หรือ C9 ก็ให้ปรับผลรวมโดยอัตโนมัติ

วิธีการ
ต้องใช้คำสั่ง OFFSET เพื่อกำหนดช่วงให้รวมข้อมูลด้วยคำสั่ง SUM แต่เนื่องจากมีการเผื…

SUBSTITUTE และ REPLACE ใน Excel

รูปภาพ
SUBSTITURE และ REPLACE ของ Excel ใช้แทนที่ข้อความเหมือนกัน ต่างกันที่ ถ้าเราทราบตำแหน่งของข้อความเดิมที่จะไปแทนที่ ให้ใช้ Replace แต่ถ้าเราไม่ทราบตำแหน่ง ให้ใช้ Substitute

รูปแบบการใช้งาน

SUBSTITUTE(text, "old_text", "new_text", instance_num)
   text:  ตำแหน่งข้อความที่จะนำมาเปลี่ยน เช่น A1
   old_text: ข้อความเดิมที่ต้องการจะเปลี่ยน
   new_text:  ข้อความที่ต้องการให้เปลี่ยนเป็นข้อความนี้
   instance_num:  ระบุจำนวนครั้งของข้อความที่เกิดขึ้นในข้อความที่จะนำมาเปลี่ยน ที่ต้องการเปลี่ยน (งง เหมือนกัน อ่านต่ออีกซักหน่อยนะครับ)  ถ้าไม่ระบุ Excel จะเปลี่ยนข้อความนั้น ๆ ทีมีอยู่ในข้อความทุกครั้ง เช่น ข้อความเดิมคือ 24122341225 ถ้าต้องการเปลี่ยนเลข 41 เป็น 55 จะมีการเปลี่ยน 2 ครั้ง เพราะหมายเลข 41 มีปรากฏในข้อความที่ระบุ 2 ครั้ง คือ ปราฏครั้งที่ 1 ตำแหน่งที่ 2 และ ปรากฏครั้งที่ 2 ตำแหน่งที่ 7 (ดังนี้ 24122341225) ดังนั้น ถ้าไม่ระบุ instance_num โปรแกรม Excel จะระบุให้ทั้ง 2 แห่ง แต่ถ้าต้องการเปลี่ยนเฉพาะ แต่ถ้าต้องการเปลี่ยนเฉพาะแห่งแรก ต้องระบุเป็น 1 เพราะเท่ากับเป็นการบอ…

SUMPRODUCT

รูปภาพ
เมื่อต้องการหาผลรวมของรายการหลายรายการ โดยมีเงื่อนไขหลายเงื่อนไข ให้ใช้ สูตร SUMPRODUCT
เช่น ต้องการหาผลรวมการขายของพนักงาน ตามข้อมูลข้างล่างนี้


จะเห็นว่า สุดาขายสินค้าหลายอย่าง แต่เราต้องการทราบเฉพาะจานเท่านั้น ดังนั้น ในกรณีนี้ จะมี 2 เงื่อนไข คือ ชื่อ และสินค้า แล้วให้นำเงินที่ขายได้มารวมกัน
ในเซลล์ D12 ให้เขียนสูตร ดังนี้
=SUMPRODUCT(--(B2:B9="สุดา"),--(C2:C9="จาน"),D2:D9)

ข้อความ --(B2:B9="สุดา") จะได้ผลเป็น 0 ถ้าช่วงที่กำหนดไม่มีคำว่า "สุดา" และ เป็น 1 ถ้ามีคำว่า "สุดา"
ข้อความ --(C2:C9="จาน")จะได้ผลเป็น 0 ถ้าช่วงที่กำหนดไม่มีคำว่า "จาน" และ เป็น 1 ถ้ามีคำว่า "จาน"
ส่วน D2:D9 คือค่าที่จะให้นำมารวมกัน

ผลที่ออกมาจะได้ ดังภาพ
ในกรณีที่มีการระบุจำนวนสินค้า และราคาสินค้าด้วย ดังภาพข้างล่างนี้
จะเห็นว่า สุดา ขายจานได้ 5 ใบวันที่ 1/4/2555 และ ขายได้อีก 8 ใบ เมื่อวันที่ 6/4/2555 จานราคาใบละ 20 บาท ดังนั้น การคำนวณ จึงต้องเอาจำนวนที่ขายได้ ไปคูณกับราคาแต่ละชิ้น แล้วจึงนำไปบวกกันอีกที ลักษณะนี้ เขียนสูตรที่ D…