: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
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

การค้นหาข้อมูลแบบ 3 ชั้น

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

การค้นหาข้อมูลแบบ 3 ชั้น

#1

Post by yodpao.b »

ผมทำได้แค่การค้นหา 2 ชั้น จึงรบกวนอาจาร์ยช่วยทำต่อให้ด้วยครับ
ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การค้นหาข้อมูลแบบ 3 ชั้น

#2

Post by snasui »

:D ผมลองปรับ Code มาเป็นตัวอย่างตามด้านล่าง ลองทดสอบใช้งานดูครับ

Code: Select all

Private Sub CbB2_Change()
CbB3.Clear
'MyCbB2 = CbB2.Text
Range("C7").Select
'    Do While True
'        If MyCbB2 = ActiveCell.Value Then
'             Exit Do
'         End If
'         ActiveCell.Offset(1, 0).Select
'    Loop
    Do While Selection <> ""
        If CbB2 = ActiveCell And ActiveCell.Offset(0, 1) <> ActiveCell.Offset(-1, 1) Then
            CbB3.AddItem ActiveCell.Offset(0, 1).Value
        End If
        ActiveCell.Offset(1, 0).Select
    Loop
End Sub

Private Sub UserForm_Initialize()
ActiveWorkbook.Sheets("HistoryDurable").Activate
'Range("B7").Select
'Selection.End(xlDown).Select  'เลือกจุดสุดท้าย
'TB1.Value = ActiveCell.Offset(0, 0).Value + 1  'เลือกจุดนั้นแล้วบวก
TB1 = Range("B7").End(xlDown) + 1
Range("C7").Select
'MyCbB2Initial = ActiveCell.Value
MyCbB2 = ActiveCell.Value
CbB2.AddItem MyCbB2
ActiveCell.Offset(1, 0).Select
    Do While Not IsEmpty(ActiveCell.Value)
        If MyCbB2 <> ActiveCell.Value Then
            MyCbB2 = ActiveCell.Value
            CbB2.AddItem MyCbB2
        End If
            ActiveCell.Offset(1, 0).Select
    Loop
End Sub
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: การค้นหาข้อมูลแบบ 3 ชั้น

#3

Post by yodpao.b »

อาจารย์ตอนนี้ทำการค้นหาได้หลายชั้นแล้วครับ แต่ก็ติดปัญหาตรงที่ เวลากลับไปเลือกชนิดพัสดุหรือเลือกลักษณะการใช้งาน
จะเกิด error ช่วยแก้ไขให้ด้วยครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การค้นหาข้อมูลแบบ 3 ชั้น

#4

Post by snasui »

:D ติดตรงไหนช่วยแจ้งด้วยครับ เพราะตอนผมทดสอบไม่เกิด Error ครับ จะได้พิจารณาเฉพาะจุดและจะได้ลดเวลาในการลองผิดลองถูก หากได้พยายามปรับแก้แล้วช่วยแจ้งมาด้วยครับว่าได้ลองแก้เป็นอย่างไรไปบ้างแล้ว
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: การค้นหาข้อมูลแบบ 3 ชั้น

#5

Post by yodpao.b »

ที่อาจาร์ยได้ทำให้เป็นการค้นหา 2 ชั้น ใช้ได้ดีครับ แต่ผมทำเพิ่มเป็น 3 ชั้นจึง error ช่วยทดสอบให้ทีครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การค้นหาข้อมูลแบบ 3 ชั้น

#6

Post by snasui »

:D จากที่ทดสอบสามารถ Run ได้ครับ ไม่ทราบว่า Code ใดมีปัญหาครับ
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: การค้นหาข้อมูลแบบ 3 ชั้น

#7

Post by yodpao.b »

เมื่อเลือกครบทั้ง 4 บรรทัดแล้ว ให้เลือกชนิดพัสดุใหม่อีกครั้งหนึ่งผลที่ได้คือเครื่องจะหาไม่ได้และจะ Error อาจารย์ลองเปิดไฟล์ใหม่ดูนะครับ
คำถาม
เมื่อคลีกชนิดพัสดุรอบ 2 จะ error สาเหตุมาจากCbB3.Clear , CbB4.Clear ไม่ใส่ก็ไม่ได้

" อาจารย์ลองเปิดไฟล์ใหม่ดูนะครับ "
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: การค้นหาข้อมูลแบบ 3 ชั้น

#8

Post by yodpao.b »

code ที่เข้าใจว่าไม่ถูกต้องสงสัยว่าน่าจะเป็น CbB4.ClearPrivate Sub CbB3_Change()
ถ้าไม่ใช้ก็ไม่ได้มันจะไม่เครียร์ข้อมูลเก่า
CbB4.Clear
Range("D7").Select
Do While Selection <> ""
If CbB3 = ActiveCell And ActiveCell.Offset(0, 1) <> ActiveCell.Offset(-1, 1) Then
CbB4.AddItem ActiveCell.Offset(0, 1).Value
End If
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Private Sub CbB4_Change()
MyCbB4 = CbB4.Text
CbB5.Clear
Range("E7").Select
Do While True
If MyCbB4 = ActiveCell.Value Then
Exit Do
End If
ActiveCell.Offset(1, 0).Select
Loop
Do While MyCbB4 = ActiveCell.Value
CbB5.AddItem ActiveCell.Offset(0, 1).Value
ActiveCell.Offset(1, 0).Select
Loop
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การค้นหาข้อมูลแบบ 3 ชั้น

#9

Post by snasui »

:lol: ลองปรับ Code CbB4_Change เป็นตามด้านล่างครับ

Code: Select all

Private Sub CbB4_Change()
    MyCbB4 = CbB4.Text
    CbB5.Clear
    Range("E7").Select
'        Do While True
'            If MyCbB4 = ActiveCell.Value Then
'                  Exit Do
'            End If
'            ActiveCell.Offset(1, 0).Select
'         Loop
'         Do While MyCbB4 = ActiveCell.Value
'            CbB5.AddItem ActiveCell.Offset(0, 1).Value
'            ActiveCell.Offset(1, 0).Select
'        Loop
    Do While Selection <> ""
        If CbB4 = ActiveCell And ActiveCell.Offset(0, 1) <> ActiveCell.Offset(-1, 1) Then
            CbB5.AddItem ActiveCell.Offset(0, 1).Value
        End If
        ActiveCell.Offset(1, 0).Select
    Loop
End Sub
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: การค้นหาข้อมูลแบบ 3 ชั้น

#10

Post by yodpao.b »

สุดยอดเลยครับ ผมต้องปรับของเก่าที่เคยทำไว้มาใช้แบบนี้แล้ว เจ๋งสุดสุดเลยครับ
Post Reply