Page 1 of 1
รัน code index match แล้ว error
Posted: Fri Apr 20, 2018 12:33 am
by sutham
เมื่อคีย์ 000002 ในช่องเลขทะเบียนใน userform1 เมื่อกดปุ่ม ตกลง เพื่อให้ค้นหาข้อมูลที่อยู่ในคอลัมน์ E ของ sheet1 มาแสดงในช่อง textbox2 ซึ่งเป็นชื่อหนังสือ พอกดปุ่ม ตกลง แล้ว ขึ้น error
code ที่ผมเขียน คือ
Code: Select all
Private Sub CommandButton1_Click()
TextBox2.Value = WorksheetFunction.Index(Worksheets("Sheet1").Range("A:E"), WorksheetFunction.Match(TextBox1.Value, Worksheets("Sheet1").Range("A:A"), 0), 5)
End Sub
ขอคำแนะนำด้วยครับ
ขอบคุณครับ
Re: รัน code index match แล้ว error
Posted: Fri Apr 20, 2018 5:38 am
by snasui
ตัวอย่าง Code ครับ
Code: Select all
Private Sub CommandButton1_Click()
Dim sh As Worksheet
Set sh = Sheets("Sheet1")
With WorksheetFunction
If .CountIf(sh.Range("A:A"), CInt(0 & TextBox1.Value)) Then
TextBox2.Value = .Index(sh.Range("A:E"), _
.Match(CInt(TextBox1.Value), sh.Range("A:A"), 0), 5)
Else
TextBox2.Value = ""
MsgBox "Not found."
End If
End With
End Sub
Re: รัน code index match แล้ว error
Posted: Fri Apr 20, 2018 6:13 am
by sutham
ใช้งานได้แล้วครับ
ขอบคุณครับ
แต่อยากจะทราบว่าเพราะเหตุใด code ดังกล่าว จึง error
Re: รัน code index match แล้ว error
Posted: Fri Apr 20, 2018 6:22 am
by snasui
sutham wrote: Fri Apr 20, 2018 6:13 am
ใช้งานได้แล้วครับ
ขอบคุณครับ
แต่อยากจะทราบว่าเพราะเหตุใด code ดังกล่าว จึง error
ที่ Error เพราะว่าค่าใน TextBox เป็น Text ส่วนค่าใน Worksheet เป็น Number จำเป็นจะต้องแปลง Text ให้เป็น Number เสียก่อนจึงจะ Match กันได้ สังเกตว่าผมจะใช้ Cint เพื่อแปลงข้อมูลใน TextBox ให้เป็น Integer ครับ
การนำข้อมูลมา Match กันให้ตรวจสอบ Data Type ก่อนเสมอว่าเป็นประเภทเดียวกันหรือไม่ การกำหนดรูปแบบให้มี 0 นำหน้าไม่ได้ช่วยให้เปลี่ยน Data Type แต่อย่างใด ควรอ่านและทำความเข้าใจ Code ประกอบจะได้ทราบว่ามีประเด็นอะไรเกี่ยวข้องกับงานลักษณะนี้บ้างที่จะต้องคำนึงถึงครับ
Re: รัน code index match แล้ว error
Posted: Fri Apr 20, 2018 7:43 am
by sutham
เข้าใจแล้วครับ
ขอบคุณครับ