Access : จุดเริ่มต้นที่ง่ายที่สุดสำหรับการเรียนรู้ ระบบฐานข้อมูล Access : จุดเริ่มต้นที่ง่ายที่สุดสำหรับการเรียนรู้ การเขียนโปรแกรม Access : เป็นได้ทั้งตัวเก็บฐานข้อมูล และตัวจัดการฐานข้อมูล Thai Access : บอร์ดเสริมการเรียนรู้ Access ด้วยภาษาไทย
@ เขียนคำถามให้ผู้ตอบเข้าใจ จะช่วยให้ผู้ถามได้คำตอบที่ชัดเจนและรวดเร็ว / @ คุณได้คำตอบที่ต้องการแล้วหรือยัง? กลับมาอีกสักครั้งเพื่อแจ้งผู้ตอบ.
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
จะทำอะไรเหรอครับ แล้ว Sendkeys ไม่ตอบโจทย์ยังไง
เลยใช้คำสั่งให้ไป Setfocus ที่ปุ่ม แล้ว Sendkey {Enter} มันใช้ได้ดีเลยครับ ติดที่มันสั่ง Numlock
ลองแบบนี้ดูนะครับ1.สร้าง Subprocedure ให้ทำงานตามต้องการ2.สร้าง Function() เรียกการทำงาน Call Subprocedure3.สร้าง Macro เรียกการทำงานของ Function (ก่อนเรียก Function ให้ GotoControl เพื่อไป Focus)4.ที่ Event On_Focus ของ Control เรียกการทำงานของ Macro (Docmd.RunMacro)คือพยายามเลี่ยง SendKeys ผมเคยลองใช้วิธีนี้ได้ผลครับ มันไม่กด Numlockหรือถ้ามีวิธีอื่น รอท่านอื่นๆมาตอบครับ
ใช้ Event Enter ของปุ่มช่วยก็ได้ครับเช่นสมมุติปุ่มชื่อ ShowMapPrivate Sub ShowMap_Enter()คำสั่งแสดงแผนที หรือคำสั่งที่ต้องการEnd Subที่ปุ่มที่ต้องการกดก็สั่งPrivate Sub Command1_Click()Call ShowMap_EnterEnd Subถ้าจะทำเงื่อนไขต่อไปเลยแบบไม่ต้องกดปุ่มอื่นๆ ก็ใช้Call ShowMap_Enterได้เลยซึ่งเป็นการประยุกต์ใช้คำสั่งแทนการกด Enter เองได้เลย แบบนี้ทำให้ SendKey ไม่ต้องใช้อีก และไม่ต้องสั่ง setfocus ด้วยหรือถ้าท่านสั่ง Setfocus ปุ่มShowMap Event Enter ก็จะทำงานทันทีเช่นกันคับ โดยไม่ต้อง Call อีก
หาว่า error เพราะอะไรและแก้ไขที่จุดนั้น จะเป็นสิ่งที่ถูกกว่าเลี่ยงมาใช้ Sendkeys ครับ ส่วนอาการ NumLock เท่าที่เคยได้ยิน เป็นบักของ VBA ครับ แก้ไขไม่ได้ แต่สั่ง Sendkeys "{NUMLOCK}", True ไปอีกทีเพื่อให้กลับสถานะเดิมพอจะกล้อมแกล้มไปได้ แต่ได้ผล 100% ไหม อันนี้ไม่ทราบครับ
ลองคำสั่งแบบ API ดูไม๊ครับ เผื่อช่วยได้Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)การใช้งานแทน Sendkey keybd_event &HD, 0, 0, 0 keybd_event &HD, 0, &H2, 0จะเป็นการส่งคีย์ ENTER