:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

การสร้าง Query จาก Validation

Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: การสร้าง Query จาก Validation

Re: การสร้าง Query จาก Validation

#22

by bank9597 » Mon Nov 07, 2011 11:35 pm

:D ผมไม่รู้จะบันทึกอย่างไรครับ

ยังไงผมจะลองหาวิธีดูก่อนครับ :D

Re: การสร้าง Query จาก Validation

#21

by snasui » Mon Nov 07, 2011 11:05 pm

:D หากเขียนเองไม่ได้ลองบันทึก Macro ดูครับ การทำ Unique สามารถเลือกข้อมูลแล้วเข้าเมนู Data > Remove Duplicates สำหรับ Excel 2007 ขึ้นไปครับ จากนั้นค่อยนำ Code ที่ได้มาปรับเป็นตามต้องการ ต้องขออภัยที่จะไม่เขียนตัวอย่างให้ก่อน การถามเรื่อง VBA ควรเขียนมาเองก่อนทุกครั้ง ติดตรงไหนก็มาถามกันได้เรื่อย ๆ ครับ

Re: การสร้าง Query จาก Validation

#20

by bank9597 » Mon Nov 07, 2011 10:56 pm

:| ถ้าทำแบบนั้นได้ รบกวนขอตัวอย่างศึกษาได้ไหมครับ อย่างที่เคยบอกคือคิดเองยังไม่ค่อยได้ อิอิ :mrgreen:

Re: การสร้าง Query จาก Validation

#19

by snasui » Mon Nov 07, 2011 10:52 pm

:lol: เราสามารถหาค่ารายการใด ๆ แบบ Unique ด้วย VBA เพื่อนำไปใช้ใน Valiadion โดยไม่พึ่งสูตรก็ย่อมทำได้ ซึ่งไม่จำเป็นต้องคอย Copy สูตรอยู่เรื่อย ๆ หรือ สามารถใช้ Code VBA Copy สูตรลงมาเรื่อย ๆ โดยไม่ต้องคอย Manaul ก็สามารถทำได้เช่นกันครับ

Re: การสร้าง Query จาก Validation

#18

by bank9597 » Mon Nov 07, 2011 2:44 pm

:D รบกวนถามเรื่อง AutoValidation อีกครั้งครับ

เนื่องจากว่าการทำ AutoValidation เราจะสามารถทำได้ (สะดวก) ในกรณีที่ข้อมูลมีจำนวน Record ที่แน่นอน หรือมีการเปลี่ยนแปลงน้อย
เช่นในกรณีของ Product,Supplier เราสามารถรู้จำนวน Record ที่ค่อนข้างชัดเจนว่ามีปริมาณเท่าไหร่ ดังนั้นเราจึงสามารถใช้สูตรและเขียนโค๊ดได้ตามวิธีการดังที่อาจารย์กล่าวมาแล้ว

แต่หากว่า เราต้องการทำ AutoValidation ในตารางข้อมูลที่มีจำนวนมากๆ เช่น ในชีท Database จะมีอัตราการเพิ่มขึ้นของ Record ต่อวันมากมายหลาย Record หากเราใช้วิธีการเดิม อาจจะทำให้เราผิดพลาดได้ เนื่องจากเราต้องเข้าไป Copy สูตร ลงมาเรื่อยๆ ตามจำนวนข้อมูลที่เพิ่มขึ้น

ดังนั้นผมจึงอยากจะขอถามอาจารย์ครับว่า เรามีวิธีการอื่นอีกไหมครับ ที่สามารถทำ AutoValidation โดยสะดวกกว่านี้ครับ :|

Re: การสร้าง Query จาก Validation

#17

by bank9597 » Thu Nov 03, 2011 10:33 am

:D แก้ไขครับอาจารย์

เกิดจากความผิดพลาดของผมเอง ผมดูแล้ว พลาดตรงที่การระบุเซลล์ครับ ขอโทษอาจารย์ด้วยจริงๆ :D

:mrgreen: :mrgreen: :mrgreen: :mrgreen:

Re: การสร้าง Query จาก Validation

#16

by snasui » Thu Nov 03, 2011 10:31 am

:D ที่ไม่ได้ก็เป็นเรื่องที่ถูกต้องแล้วครับเพราะเซลล์ที่มี Validation ไม่อยู่ในคอลัมน์ B แต่เขียน Code ให้ตรวจสอบในคอลัมน์ B :ard:

Code: Select all

If Not Intersect(Target, Range("B17:B76")) Is Nothing Then

Re: การสร้าง Query จาก Validation

#15

by bank9597 » Thu Nov 03, 2011 10:05 am

:D ยุ่งแล้วครับอาจารย์ กำลังทำชีทตัวอย่างไปให้อาจารย์ดู เสร็จแล้วลองทำสอบดู มันทำได้อย่างที่อาจารย์ได้กล่าวไว้ ผมเลยชักเริ่มงงครับ

คงต้องส่งไฟล์ตัวจริงไปให้ดู (อายชาวบ้านจัง) แล้วล่ะครับ

ผมใส่โค๊ดในชีท Quotation และชีท PurchaseOrder ครับอาจารย์
Attachments
Model.xlsm
ชีทที่มีปัญหา
(270.28 KiB) Downloaded 10 times
test.xlsm
ชีททดสอบ
(20.52 KiB) Downloaded 7 times

Re: การสร้าง Query จาก Validation

#14

by snasui » Thu Nov 03, 2011 9:35 am

:D ส่งไฟล์ที่เป็นปัญหามาด้วยครับ

Re: การสร้าง Query จาก Validation

#13

by bank9597 » Thu Nov 03, 2011 9:16 am

:D โค๊ดด้านล่างครับ

Code: Select all

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    On Error Resume Next
    If Not Intersect(Target, Range("B17:B76")) Is Nothing Then
        Worksheets("สินค้า").Range("F1") = Target
        Target.Select
        If Len(Target) < 10 Then
        Application.SendKeys "%{DOWN}"
        End If
    End If
    Application.EnableEvents = True
End Sub


ผมได้เอาใส่โค๊ดนี้ในชีท Quotation ใช้งานได้ครับ แล้วผมก็ Copy โค๊ดด้านบนไปใส่ในชีท PurchaseOrder ทำทุกองค์ประกอบให้เหมือนกับชีท Quotation แล้ว แต่ มันยังใช้การไม่ได้ครับ เราต้องเพิ่มตรงไหนอีกไหมครับ

Re: การสร้าง Query จาก Validation

#12

by snasui » Thu Nov 03, 2011 8:53 am

:D Code ใดที่บอกว่าไม่ได้แนบมาด้วยครับ

Code สำหรับ Validation ที่ผมเขียนให้นั้นใช้ Event ในการเปลี่ยนแปลง Worksheet โดยกำหนดให้ดูเฉพาะช่วงข้อมูลใด ๆ ที่เปลี่ยนแปลงเข้ามาช่วย ดังนั้น หากต้องนำไปใช้กับชีทอื่น ๆ ก็ต้อง Copy ไปไว้ในชีทนั้น ๆ ครับ

Re: การสร้าง Query จาก Validation

#11

by bank9597 » Thu Nov 03, 2011 12:18 am

:D รบกวนอีกครั้งครับอาจารย์
ในกรณีที่เราจะเอาค่า ValData ไปใช้ในชีทอื่น ซึ่งมากกว่า 1 ชีทขึ้นไป เราสามารถเอาโค๊ด ไปใช้ซ้ำได้อีกไหมครับ

เพราะว่าผมมีชีททำใบสั่งซื้อ และชีททำใบสอบราคา และอื่นๆ ที่ต้องการใช้ค่า ValData ร่วมกันครับ

ผมลองทำแล้วไม่ได้ครับ

Re: การสร้าง Query จาก Validation

#10

by bank9597 » Wed Nov 02, 2011 4:27 pm

:shock: เจองานยากอีกแล้วเหรอครับเนี่ย :|

ตอนที่ถามอาจารย์หัวข้อนี้อยู่ ผมก็กำลังเขียนโค๊ดตรวจสอบการคีย์ข้อมูลไม่ครบ และก็ยังไม่ได้สักที :mrgreen:

อาการหนักแล้วครับ :D :D :D

Re: การสร้าง Query จาก Validation

#9

by snasui » Wed Nov 02, 2011 4:22 pm

:lol: ปล่อยให้คีย์ไปตามสบายครับ แต่เวลา Save หรือ บันทึก จะมี Code สำหรับตรวจสอบอีกที ถ้าพบว่ามีรายการใดไม่อยู่ในฐานข้อมูลก็มี Message แจ้งและไม่สามารถ Save หรือบันทึกได้ครับ :mrgreen:

Re: การสร้าง Query จาก Validation

#8

by bank9597 » Wed Nov 02, 2011 4:13 pm

:lol: ประนามความโง่เขลของตัวเองอีกแล้วครับ :lol:
อันที่จริง ไฟล์ที่แนบให้ไปตอนแรก ก็เกือบจะใช้งานได้แล้ว แต่กลับคิดไม่ออก :D

ขอบคุณมากครับอาจารย์

:| แต่ก็คิดว่ายังติดปัญหาอยู่ครับ เนื่องจากเซลล์ที่มี Validation จะป้องการคีย์ข้อผิด หมายถึงถ้าชื่อไม่มีในฐานข้อมูล มันก็จะไม่ยอมให้ผ่าน ต้องเลือกจากรายการอย่างเดียว

แต่ทีนี้ ผมทำแบบ AutoValidation ผมจะต้องยกเลิกการป้องกันตรงนี้ โดยการเข้าไปใน Data Validation :ard:
untitled.JPG
untitled.JPG (23.3 KiB) Viewed 114 times
เมื่อเป็นเช่นนี้ ทำให้มีโอกาสที่จะคีย์ข้อมูลผิดได้ง่าย เพราะถึงแม้ชื่อที่คีย์ไปนั้นจะไม่มีใน Database มันก็ยอมให้คีย์อยู่

ผมลองดูไฟล์ที่อาจารย์แนบมาให้เป็นตัวอย่าง ในชีท PrintReport ช่วง D7:D20 ผมสังเกตได้ว่าจะมีการคีย์ตัวอักษรลงไป เช่น ก จ ช.. ซึ่งระบบยอมให้คีย์ลงไปได้
ถ้าเป็นอย่างนี้ โอกาสที่ผู้ทำรายการ จะอุปโหลกชื่อสินค้าขึ้นมาเอง โดยไม่มีในฐานข้อมูลก็ได้สิน่ะครับ

ถ้าเป็นแบบนี้ เราจะแก้อย่างไรครับ คงต้องลงลึกถึงโค๊ด VBA ใช่ไหมครับ

Re: การสร้าง Query จาก Validation

#7

by snasui » Wed Nov 02, 2011 3:47 pm

:lol: ไฟล์ที่แนบไปให้นั้นสามารถทำได้ตามที่ต้องการได้ทั้งหมดครับ คราวนี้อยู่ที่การนำไปใช้แล้วละครับ :lol:

Re: การสร้าง Query จาก Validation

#6

by bank9597 » Wed Nov 02, 2011 3:42 pm

:D ผมพอใจครับอาจารย์ แต่ว่ารูปแบบงานไม่เหมือนกับงานของผม ทำให้ผมยังมองไม่ออกเลยครับว่าผมจะนำเอาไปปรับใช้อย่างไร

ในกรณีของผมต้องทำใบสั่งซื้อ มีการทำรายการในเซลล์ B17:B36 และทุกเซลล์จะมีค่า Validation โดยเลือกรายการจากชีท Product โดยตรง
ทีนี้คือผมอยากเพิ่มขั้นความสามารถไปอีก โดยให้สามารถคีย์ตัวอักษรตัวแรกของสินค้าที่ต้องการ แล้วระบบจะแสดงชื่อสินค้าที่ตรงกับอักษรที่คียืไป ขึ้นมาอัตโนมัติ :D

ยังมืดครับ :roll:

Re: การสร้าง Query จาก Validation

#5

by snasui » Wed Nov 02, 2011 3:18 pm

:D ลองศึกษาจากไฟล์แนบครับ โดย
  • มีการให้ชื่อกับช่วงเซลล์เพื่อทำ Validation ในชีท PrintReport ชื่อ ValData
  • มีการแสดงข้อมูลตามเงื่อนไขด้วยสูตรอยู่ในชีท Employee Data คอลัมน์ AE:AG
  • เขียน Code VBA ที่ชีท PrintReport
Attachments
AutoValidation.xlsm
(31.48 KiB) Downloaded 23 times

Re: การสร้าง Query จาก Validation

#4

by bank9597 » Wed Nov 02, 2011 2:42 pm

ผมได้แนบชีทมาให้ครับ เป็นตัวอย่างการใช้ Validation โดนในชีท Form เซลล์ A1 จะคีย์ค่าที่เราต้องการไป เช่น คีย์ A มันก็จะแสดงชื่อที่มีตัวอักษร A ขึ้นมา

แต่ในกรณีที่ผมจะทำในลักษณะหลายเซลล์ เริ่มจากเซลล์ A1:A20 ผมจะปรับอย่างไร รบกวนอาจารย์แนะแนวทางได้ไหม
Attachments
test.xlsm
(20.4 KiB) Downloaded 9 times

Re: การสร้าง Query จาก Validation

#3

by bank9597 » Wed Nov 02, 2011 2:04 pm

:D ผมดูตัวอย่างแล้วครับ ค่อนข้างงงกับตัวงานตัวที่แนบมาให้ ก็เลยปรับมาใช้ยังไม่ได้เลยครับ

Top