Page 1 of 1

ต้องการเรียกข้อมูล (Search) โดยใช้ Commandbotton เพื่อแสดงใน Userform ครับ

Posted: Sun Oct 14, 2018 9:16 pm
by AirkArk
สวัสดีครับ อยากจะสอบถามเกี่ยวกับการเรียกข้อมูล (Search) โดยใช้ Commandbotton เพื่อแสดงใน Userform ตอนรันแรกๆ รันได้ครับ แต่พอปิด-เปิดเครื่องใหม่ปรากฎว่าขึ้น error 91 ครับ รบกวนช่วยดูให้หน่อยได้ไหมครับว่าผมเขียน Code ผิดตรงไหน แล้วควรแก้ไขอย่างไรครับ

Code: Select all

Private Sub CommandButton5_Click()
    Dim findvalue As Range
Set findvalue = Sheets("RegisterList").Range("a:a").Find(What:=Me.TextBox23.Value, LookIn:=xlFormulas, LookAt:=xlWhole)
    Me.TextBox1.Value = findvalue.Offset(0, 3).Value
    Me.TextBox2.Value = findvalue.Offset(0, 4).Value
    Me.CommandBox1.Value = findvalue.Offset(0, 5).Value
    Me.TextBox3.Value = findvalue.Offset(0, 6).Value
    Me.TextBox21.Value = findvalue.Offset(0, 7).Value
    Me.CommandBox11.Value = findvalue.Offset(0, 10).Value
    Me.CommandBox2.Value = findvalue.Offset(0, 11).Value
    Me.TextBox17.Value = findvalue.Offset(0, 12).Value
    Me.TextBox20.Value = findvalue.Offset(0, 13).Value
    Me.TextBox10.Value = findvalue.Offset(0, 14).Value
    Me.TextBox11.Value = findvalue.Offset(0, 15).Value
    Me.TextBox12.Value = findvalue.Offset(0, 16).Value
    Me.CommandBox4.Value = findvalue.Offset(0, 18).Value
    Me.TextBox8.Value = findvalue.Offset(0, 19).Value
    Me.ComboBox1.Value = findvalue.Offset(0, 20).Value
    Me.TextBox18.Value = findvalue.Offset(0, 21).Value
    Me.ComboBox2.Value = findvalue.Offset(0, 22).Value
    Me.TextBox19.Value = findvalue.Offset(0, 23).Value
    Me.TextBox22.Value = findvalue.Offset(0, 24).Value
    Me.TextBox13.Value = findvalue.Offset(0, 25).Value
    Me.TextBox14.Value = findvalue.Offset(0, 26).Value
    Me.TextBox9.Value = findvalue.Offset(0, 27).Value
    Me.CommandBox5.Value = findvalue.Offset(0, 28).Value
    Me.CommandBox6.Value = findvalue.Offset(0, 29).Value
    Me.CommandBox7.Value = findvalue.Offset(0, 30).Value
    Me.CommandBox8.Value = findvalue.Offset(0, 31).Value
    Me.TextBox5.Value = findvalue.Offset(0, 32).Value
    Me.TextBox6.Value = findvalue.Offset(0, 33).Value
    Me.TextBox7.Value = findvalue.Offset(0, 34).Value
    Me.CommandBox12.Value = findvalue.Offset(0, 41).Value
    Me.CommandBox13.Value = findvalue.Offset(0, 42).Value
End sub
ขอบคุณล่วงหน้าครับ

Re: ต้องการเรียกข้อมูล (Search) โดยใช้ Commandbotton เพื่อแสดงใน Userform ครับ

Posted: Mon Oct 15, 2018 7:18 am
by snasui
:D ผมลองเปิดมาก็ไม่พบปัญหาอะไรครับ

กรณีมีหลาย Procedure ใน VBAProject กรุณาอธิบายว่าเป็นที่ UserForm ชื่ออะไร ติดขัดที่ Procedure ใดจะได้เข้าถึงปัญหาได้โดยไวครับ

สิ่งที่พบเบื้องต้นใน Code คือมี Procedure ว่างเปล่าจำนวนมากที่เกิดจากการ Double Click ปุ่มตอน Design หากไม่ใช้ควรลบทิ้งไปจะได้เข้าถึง Code ที่ต้องการใช้ได้ง่ายขึ้น นอกจากนี้ยังพบว่ามี ComboBox ซ้อนกันหลายอันตำแหน่งด้านขวาของ Label พื้นที่เดิม, พื้นที่ใหม่ของ UserForm1 ลองลบ ComboBox ที่ซ้อนอยู่บนสุดดูจะเข้าใจครับ

Re: ต้องการเรียกข้อมูล (Search) โดยใช้ Commandbotton เพื่อแสดงใน Userform ครับ

Posted: Tue Oct 16, 2018 8:25 am
by AirkArk
ขอบคุณมากครับ สำหรับคำแนะนำ
Userform ที่พบปัญหาคือ Userform1 ครับ เกี่ยวกับปุ่ม Search คือเมื่อผมใส่เลข Item no. ในช่อง Textbox23 แล้วกดปุ่ม Search ปรากฎว่าขึ้น Code error "91" Object variable or With block variable not set. ที่ code Me.TextBox1.Value = findvalue.Offset(0, 3).Value ไปจนถึง Me.CommandBox13.Value = findvalue.Offset(0, 42).Value ครับ

Re: ต้องการเรียกข้อมูล (Search) โดยใช้ Commandbotton เพื่อแสดงใน Userform ครับ

Posted: Tue Oct 16, 2018 10:03 am
by astalavista
ลองเปลี่ยนตรง findvalue ตรง LookIn เป็น LookIn:=xlValues ดูครับ

Code: Select all

Set findvalue = Sheets("RegisterList").Range("a:a").Find(What:=Me.TextBox23.Value, LookIn:=xlValues, LookAt:=xlWhole)

Re: ต้องการเรียกข้อมูล (Search) โดยใช้ Commandbotton เพื่อแสดงใน Userform ครับ

Posted: Tue Oct 16, 2018 1:39 pm
by AirkArk
astalavista wrote: Tue Oct 16, 2018 10:03 am ลองเปลี่ยนตรง findvalue ตรง LookIn เป็น LookIn:=xlValues ดูครับ

Code: Select all

Set findvalue = Sheets("RegisterList").Range("a:a").Find(What:=Me.TextBox23.Value, LookIn:=xlValues, LookAt:=xlWhole)
ทำได้แล้วครับ แก้ตามที่คุณ astalavista บอก แล้วนำไปปรับใช้กับการอัพเดตข้อมูลทับไปในแถวเดิมด้วยครับ
ขอบคุณทั้งอาจารย์ snasui และคุณ astalavista มากครับ

ปล.ผมแนบไฟล์ที่แก้ไขและปรับปรุงไว้นะครับ