Page 1 of 1
ถามเรื่อง VBA Form (1) รัน เลขที่และ (2) ค้นข้อมูล
Posted: Wed May 27, 2015 4:21 pm
by Pongwipat
ขออนุญาต อาจารย์หรือผู้รู้ช่วยให้คำแนะนำด้วยครับ
จากไฟล์ที่แนบมามีปัญหาดังนี้ครับ
(1) เมื่อบันทึกข้อมูลแล้วต้องการให้เลขที่มันรันโดยอัตโนมัติ เริ่มจาก 5800001 โดย 58 คือปีที่บันทึก และ 00001 คือเลขที่ที่รัน
(2) การค้นข้อมูล ผมใช้ชื่อค้นแล้ว ต้องการให้เลขที่ขึ้น แต่มันฟ้อง error
Me.Label9 = Application.WorksheetFunction.VLookup(Me.ComboBox1, Sheets("database").Range("A2:G10000"), -1, False)
ควรแก้ไขอย่างไร
(3) กรณีค้น ชื่อเดียวกัน เช่น "ฉันรัก" ในช่องนามสกุลให้ขึ้น ทั้งสองนามสกุล คือ " เมืองไทย " และ "ขึ้นภูเขา" ควรทำอย่างไร
(4) การค้นจากวันที่บันทึก ระหว่างวัน ให้ข้อมูลทั้งหมดแสดง ควรทำอย่างไร
ขอบคุณสำหรับคำแนะนำครับ
Re: ถามเรื่อง VBA Form (1) รัน เลขที่และ (2) ค้นข้อมูล
Posted: Wed May 27, 2015 4:37 pm
by snasui

ค่อยถามตอบกันไปครับ
Pongwipat wrote:(1) เมื่อบันทึกข้อมูลแล้วต้องการให้เลขที่มันรันโดยอัตโนมัติ เริ่มจาก 5800001 โดย 58 คือปีที่บันทึก และ 00001 คือเลขที่ที่รัน
ข้อ 1 Code ที่เขียนไว้ชื่อ Procedure อะไร ติดขัดบรรทัดใด ควรแนบ Code มาด้วยเพื่อเข้าถึงปัญหาโดยไวครับ
Pongwipat wrote:(2) การค้นข้อมูล ผมใช้ชื่อค้นแล้ว ต้องการให้เลขที่ขึ้น แต่มันฟ้อง error
Me.Label9 = Application.WorksheetFunction.VLookup(Me.ComboBox1, Sheets("database").Range("A2:G10000"), -1, False)
ควรแก้ไขอย่างไร
ตัวอย่างการปรับ Code ครับ
Code: Select all
With Application.WorksheetFunction
Me.Label9 = .Index(Sheets("database").Range("a2:a10000"), .Match(Me.ComboBox1.Text, Sheets("database").Range("b2:b10000"), 0))
End With
Pongwipat wrote:(3) กรณีค้น ชื่อเดียวกัน เช่น "ฉันรัก" ในช่องนามสกุลให้ขึ้น ทั้งสองนามสกุล คือ " เมืองไทย " และ "ขึ้นภูเขา" ควรทำอย่างไร
(4) การค้นจากวันที่บันทึก ระหว่างวัน ให้ข้อมูลทั้งหมดแสดง ควรทำอย่างไร
Code ชื่ออะไร ติดขัดบรรทัดใด แนบ Code มาด้วยครับ
้
Re: ถามเรื่อง VBA Form (1) รัน เลขที่และ (2) ค้นข้อมูล
Posted: Wed May 27, 2015 8:48 pm
by Pongwipat
ขอบคุณครับ ไม่ติดบั๊กแล้ว ข้อ 2
สำหรับข้อ (1) เมื่อบันทึกข้อมูลแล้วต้องการให้เลขที่มันรันโดยอัตโนมัติ เริ่มจาก 5800001 โดย 58 คือปีที่บันทึก และ 00001 คือเลขที่ที่รัน
ผมต้องการให้เลขที่เปลี่ยนตามปี เช่น ปี 58 เก็บถึง 580678 เลขต่อไป ปี 59 ต้องเป็นเลขท่ี 590679 ..... ผมลองเอาเรื่องการบันทึกวันเวลา มาประยุกต์ให้มันเรียกปีมาแทน แล้วทำเป็นปี พ.ศ. 58 * 10000 + นับแถวไปเรื่อย ๆ มันไม่มีบั๊ก
แต่อยากถามอาจารย์ว่า เวลาเรียกข้อมูลเดิมมาแก้ไขจะมีผลทำให้ เลขที่เปลี่ยนหรือมีปัญหาหรือไม่ครับ
If Cell.Column = 2 Then
Cell.Offset(, -1).Value = ((Year(Now) + 543 - 2500) * 10000) + (Range("A" & Rows.Count).End(xlUp).Row)
สำหรับข้อ (3) กรณีค้น ชื่อเดียวกัน เช่น "ฉันรัก" ในช่องนามสกุลให้ขึ้น ทั้งสองนามสกุล คือ " เมืองไทย " และ "ขึ้นภูเขา" ควรทำอย่างไร
ใน userform 2
Private Sub CommandButton1_Click()
Me.Label10 = Application.WorksheetFunction.VLookup(Me.ComboBox1, Sheets("database").Range("B2:G10000"), 1, False)
Me.Label11 = Application.WorksheetFunction.VLookup(Me.ComboBox1, Sheets("database").Range("B2:G10000"), 2, False)
คือผมใช้ ชื่อ ในการค้นข้อมูลแต่ ถ้ากรณีชื่อซ้ำกันหลายคน ถ้าต้องการให้ที่แสดงทุกคนที่ชื่อซ้ำกั เช่น
สมชาย กับอะไร
สมชาย เมืองไทย
สมชาย ขึ้นภูเขา
สมชาย เมืองไทย
(4) การค้นจากวันที่บันทึก ระหว่างวัน ให้ข้อมูลทั้งหมดแสดง ควรทำอย่างไร
เดี่ยวผมจะลองโค๊ดก่อนครับ
Re: ถามเรื่อง VBA Form (1) รัน เลขที่และ (2) ค้นข้อมูล
Posted: Wed May 27, 2015 9:19 pm
by snasui

ให้ตอบตามทีผมถามและทำให้ผ่านไปทีละข้อ เริ่มที่ข้อ 1 ครับ
คำถามที่ผมถามไปคือ Procedure ชื่ออะไร ให้ตอบชื่อ Procedure และหาก Error ที่บรรทัดใดหรือไม่ได้ผลที่บรรทัดใดให้แจ้งบรรทัดนั้นมาด้วย ที่สำคัญช่วยลำดับสิ่งที่ทำมาด้วยว่ามีลำดับอย่างไร จะได้เข้าถึงปัญหาได้โดยไว
วิธีการ Post Code ให้สะดวกต่อการอ่านดูตัวอย่างที่นี่ครับ
viewtopic.php?f=6&t=1187