Page 1 of 1

การทำ Auto Validation

Posted: Thu Feb 23, 2012 4:28 pm
by bank9597
:D อาจารย์ครับ ผมอยากได้วิธีการทำ AutoValidation แบบใหม่ โดยไม่ต้องใช้สูตร และใช้ TextBox
อยากได้แบบว่าคลิ๊กที่เซลล์แล้วคีย์ตัวอักษรจากนั้นก็จะมีรายการที่เกี่ยวข้องแสดงขึ้นมาเลย

ไม่ทราบว่า พอจะแนะนำได้ไหมครับ หรือมีตัวอย่างไหนให้พอศึกษาได้บ้างครับ ขอบคุณครับ

Re: การทำ Auto Validation

Posted: Thu Feb 23, 2012 4:32 pm
by snasui
:D ดูที่นี่ http://www.snasui.com/viewtopic.php?f=3&t=936 ครับ ซึ่งจะมีข้อจำกัดในการคีย์ภาษาไทยครับ

Re: การทำ Auto Validation

Posted: Thu Feb 23, 2012 5:23 pm
by bank9597
:D ขอบคุณครับ

ผมทำแบบนี้ได้แล้วครับ

Re: การทำ Auto Validation

Posted: Thu Feb 23, 2012 5:33 pm
by bank9597
:D ผมมีไฟล์ตัวอย่างมาให้อาจารย์อธิบายหน่อยครับ เป็นความบังเอิญบางอย่างที่อยากให้อาจารย์ดูและคิดว่าน่าจะปรับไปใช้อะไรได้บ้าง

ในชีท Supplier ทีฺ่B4:B12 พอเราคลิ๊กเซลล์ใดเซลล์หนึ่ง มันจะโชว์รายการขึ้นมา ซึ่งผมไม่รู้ว่าเพราะอะไร และเราเอาความสามารถตรงนี้ไปปรับใช้ในการทำ AutoValidation ได้ไหมหนอ :mrgreen:

Re: การทำ Auto Validation

Posted: Thu Feb 23, 2012 5:48 pm
by snasui
:D ไม่ใช่ความบังเอิญหรอกครับ เป็นการใช้คุณลักษณะของโปรแกรมในการเลือกค่าที่คีย์ตามลำดับกันมา เพื่อจะได้ไม่ต้องคีย์ค่าซ้ำ

ยกตัวอย่างเช่น A1 คีย Abcd, A2 คีย์ Efghi จากนั้นมาที่ A3 กดแป้น Alt+ลูกศรลง ก็จะมี Abcd, Efghi มาให้เลือก

ที่เป็นเช่นนั้นเพราะเขียนไว้ใน Code ครับ

Code: Select all

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$B$4" Then
        Range("G1") = Target
        Target.Select
        Application.SendKeys "%{DOWN}"
    End If
    If Target.Address = "$B$5" Then
        Range("G1") = Target
        Target.Select
        Application.SendKeys "%{DOWN}"
    End If
    If Target.Address = "$B$6" Then
        Range("G1") = Target
        Target.Select
        Application.SendKeys "%{DOWN}"
    End If
    If Target.Address = "$B$7" Then
        Range("G1") = Target
        Target.Select
        Application.SendKeys "%{DOWN}"
    End If
    If Target.Address = "$B$8" Then
        Range("G1") = Target
        Target.Select
        Application.SendKeys "%{DOWN}"
    End If
    If Target.Address = "$B$9" Then
        Range("G1") = Target
        Target.Select
        Application.SendKeys "%{DOWN}"
    End If
End Sub

Re: การทำ Auto Validation

Posted: Thu Feb 23, 2012 5:53 pm
by bank9597
:D อิอิ ขออภัยที่มิได้บอกอาจารย์ให้ทราบครับว่า ผมใส่โค๊ดไปเองครับ :mrgreen:

แต่ในโค๊ดนั้น ผมไม่ทราบว่ามันเป็นแบบนั้นได้อย่างไร สมมุติผมลองคีย์ชื่อต่อลงไปในเซลล์ B13 ลงไปเรื่อยๆ Dropdown ที่แสดงมานั้นก็อักเดทตามชื่อเราแจ้งไปเลยครับ

ผมเลยอยากต่อยอดจากตรงนี้ไป ยังไงรบกวนอาจารย์เป็นที่ปรึกษาด้วยน่ะครับ