snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
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
ขอคำแนะนำด้วยครับ
ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
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
ที่ Error เพราะว่าค่าใน TextBox เป็น Text ส่วนค่าใน Worksheet เป็น Number จำเป็นจะต้องแปลง Text ให้เป็น Number เสียก่อนจึงจะ Match กันได้ สังเกตว่าผมจะใช้ Cint เพื่อแปลงข้อมูลใน TextBox ให้เป็น Integer ครับ
การนำข้อมูลมา Match กันให้ตรวจสอบ Data Type ก่อนเสมอว่าเป็นประเภทเดียวกันหรือไม่ การกำหนดรูปแบบให้มี 0 นำหน้าไม่ได้ช่วยให้เปลี่ยน Data Type แต่อย่างใด ควรอ่านและทำความเข้าใจ Code ประกอบจะได้ทราบว่ามีประเด็นอะไรเกี่ยวข้องกับงานลักษณะนี้บ้างที่จะต้องคำนึงถึงครับ