Page 1 of 1
ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Sun Aug 16, 2020 1:26 pm
by piman
สวัสดีครับ
ตอนรันโปรแกรมขึ้นมา ถ้าค่าใน textbox ของเลขที่ตำแหน่งเป็นค่าว่าง ให้ปุ่มบันทึกไม่สามารถทำงานได้ครับ
แต่พอรันโปรแกรมแล้ว ยังสามารถกดปุ่มบันทึกได้อยู่ครับ
ด้านล่างคือ code ที่ผมเขียนไว้ในช่อง textbox รับค่าเลขที่ตำแหน่งครับ
ขอบคุณครับ
Code: Select all
Private Sub txtNumber_Change()
If Me.EnableEvents = False Then Exit Sub
If Me.txtNumber.Value = "" Then
Me.cmdSave.Enabled = False
Else
Me.cmdSave.Enabled = True
End If
End Sub
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Sun Aug 16, 2020 1:37 pm
by piman
ข้อมูลเพิ่มเติมคร้บ พอเราเลือกข้อมูลที่จะไปแก้ไขแล้ว เรากดปุ่มรีเซ็ทค่าใน textbox ทั้งหมด ปุ่มบันทึกกลับล็อกให้ไม่สามารถใช้งานได้ครับ
แต่ตอนรันโปรแกรมขึ้นมาเลย ปุ่มบันทึกกลับไม่ล็อกให้ครับ
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Sun Aug 16, 2020 1:53 pm
by snasui
สรุปว่าเช็ค เลขที่ หรือ เลขที่ตำแหน่ง ที่เขียนมาคือเช็ค เลขที่ ครับ
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Sun Aug 16, 2020 3:11 pm
by piman
เลขที่ตำแหน่งครับ txtNumber ชื่อของ textbox เลขที่ตำแหน่งครับ
วัตถุประสงค์เพื่อต้องการไม่ให้สามารถกดปุ่มบันทึกได้ครับ ถ้าหากยังกรอกข้อมูลที่กำหนดไว้ไม่ครบครับ
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Sun Aug 16, 2020 5:35 pm
by snasui
ตัวอย่าง Code ครับ
เมื่อเลือกรายการแล้วคลิกปุ่ม แก้ไข หาก TextBox เลขที่ตำแหน่งเป็นค่าว่างให้ปุ่ม ยันทึก ไม่ทำงาน
Code: Select all
Private Sub cmdEdit_Click()
If selected_list = 0 Then
MsgBox "กรุณาเลือกรายการที่ต้องการแก้ไข.", vbOKOnly + vbInformation, "แก้ไข"
Exit Sub
End If
Me.txtRownumber.Value = Application.WorksheetFunction.Match(Me.lstData.List(Me.lstData.ListIndex, 0), ThisWorkbook.Sheets("Data").Range("A:A"), 0)
'ข้อมูลส่วนตัว-------------
Me.txtNumber.Value = Me.lstData.List(Me.lstData.ListIndex, 1)
Me.txtNumberdep.Value = Me.lstData.List(Me.lstData.ListIndex, 2)
If Me.txtNumberdep.Value = "" Then
Me.cmdSave.Enabled = False
Else
Me.cmdSave.Enabled = True
End If
'Other code
เมื่อแก้ไข TextBox เลขที่ตำแหน่งให้เป็นค่าว่างให้ปุ่ม บันทึก ไม่ทำงาน
Code: Select all
Private Sub txtNumberdep_Change()
If Me.txtNumberdep.Value = "" Then
Me.cmdSave.Enabled = False
Else
Me.cmdSave.Enabled = True
End If
End Sub
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Mon Aug 17, 2020 9:22 am
by piman
ขอบคุณครับผม
ผมขอสอบถามข้อมูลเพิ่มเติมครับ ผมทำการ Protect Sheet ทุก Sheet ที่มี แล้วใส่ code ปลดล็อกแล้วครับ
**แต่จะมี Sheet Searchdata ที่ใส่ code ปลดล็อกยังไงก็ไม่สามารถรันโปรแกรมได้ครับ ถ้าไม่ได้ทำการ Protect Sheet Searchdate สามารถรันได้ตามปกติครับ**
password protect sheet = "password"
แนบไฟล์ล่าสุดมาให้แล้วครับ
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Mon Aug 17, 2020 10:01 am
by piman
แจ้งข้อมูลเพิ่มเติมครับ ลองกดปุ่มบันทึก ก็ขึ้น error เหมือนกันครับ
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Mon Aug 17, 2020 12:52 pm
by logic
เท่าดที่ดู เขียนเป็น
ActiveSheet.Unprotect "password"
คือปลดล็อคเฉพาะชีตที่ Active อยู่เท่านั้น
หากจะทำงานกับชีตที่ล็อคก็ตามไปปลดที่นั่นด้วยครับ
ใส่เวอร์ชันของเอ็กเซลในข้อมูลส่วนตัวด้วยครับ ดูวิธีที่ใต้โพสต์ของอาจารย์ ส่วนผมจัดการเรียบร้อยแล้ว
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Mon Aug 17, 2020 1:15 pm
by piman
ถ้าระบุชื่อชีทไปเลย
Code: Select all
Sheets("searchdata").Unprotext "password"
ตัวอย่าง code แบบนี้ถูกต้องหรือไม่ครับ
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Mon Aug 17, 2020 1:18 pm
by logic
แบบนั้นเลยครับ
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Mon Aug 17, 2020 1:19 pm
by piman
ขอบคุณมากครับ
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Mon Aug 17, 2020 2:43 pm
by piman
สอบถามเพิ่มเติมครับ
กรณีที่ใช้ข้อมูลจาก 2 sheet ผมลองเขียน code
Code: Select all
Sheets("Data").Unprotect "password
Sheets("Searchdata").Unprotect "password"
แต่ยังขึ้น error ครับ
สามารถเขียนปลดล็อก 2 sheet ด้วย วิธีใดได้บ้างครับ
ขอบคุณครับ
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Mon Aug 17, 2020 7:42 pm
by snasui
ที่เขียนมาก็ใช้ได้แล้วครับ
การปลด Lock จะต้องปลดทุกชีตที่เกี่ยวข้องกับ Code นั้น ๆ ถ้า Code ได้เปลี่ยนค่าใน 10 ชีตก็ต้องปลด Lock ทั้ง 10 ชีตเสียก่อนครับ
ทางที่ดีให้ Loop ปลด Lock ทุกชีตเสียก่อน ทำงานเสร็จค่อย Loop เพื่อ Lock เอาไว้เหมือนเดิม จะได้ไม่ต้องมานั่งเลือกว่าจะปลดและป้องกันชีตใดครับ
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Mon Aug 17, 2020 9:43 pm
by piman
ขอบคุณครับ ผมได้ตัวอย่าง code จากเพื่อนสมาชิกแล้วครับ
ทีนี้ผมลองรัน แล้วเจอ error 1 ตำแหน่งที่ code ด้านล่างครับ
Code: Select all
Private Sub cmdDataemployee_Click()
Me.Hide
Userform1.Show
End Sub
หลังจากรัน code จะแสดงหน้าของฟอร์ม frmmain มาก่อนครับ แล้วกดปุ่มข้อมูลพนักงาน เพื่อไปที่ฟอร์ม userform1 ครับ
จากนั้นขึ้น error ที่
ครับ รบกวนด้วยครับ
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Tue Aug 18, 2020 7:59 am
by snasui
ในขั้นตอนการเปิด Form มีการ Call Procedure ที่ชื่อว่า reset และใน Procedure นี้มีการ Clear ข้อมูลในชีต Searchdata ซึ่งจะทำให้เกิด Error เพราะยังไม่ได้ปลด Lock ก่อนที่จะ Clear
การใช้ Code จำเป็นต้องฝึก Debug ให้เป็น อย่างง่าย ๆ คือคลิกเข้าไปในยังแถบที่ลูกศรสีเหลืองชี้ในภาพ จะเกิดสัญญลักษณ์สีเลือดหมูเพื่อกำหนดว่าเมื่อทำการ Run Code มาแล้วให้ Code มาหยุด ณ ตำแหน่งนี้ จากนั้นกดแป้น F8 เพื่อที่จะรันไปทีละ Step เมื่อถึงบรรทัดใดที่ Code ไม่ทำตามคำสั่งก็หมายความว่าบรรทัดนั้นก่อให้เกิดปัญหาครับ
เมื่อจะยกเลิกการหยุด Code ก็ให้คลิกซ้ำในตำแหน่งเดิมเพื่อให้สัญญลักษณ์สีเลือดหมูหายไปครับ
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Tue Aug 18, 2020 9:57 am
by piman
ขอบคุณมากครับผม สามารถรันได้แล้วครับ
เบื้องต้นผมใส่ Unprotect ทุกจุดที่มี Error เลยครับ
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Tue Aug 18, 2020 11:46 am
by zxczxcvzxcvb
สอบถามข้อมูลเพิ่มเติมครับ
ถ้าสมมุติเรากำหนดให้ใส่ข้อมูลใน Textbox1 ได้สามตัวแล้ว
อยากให้เคอร์เซอร์เลื่อนไปอยู่ TextBox2 เอง
จะใช้ Code ไหนครับ
Re: ถ้าค่าใน textbox ว่าง ให้ปุ่มบันทึกไม่สามารถใช้งานได้
Posted: Tue Aug 18, 2020 1:19 pm
by logic
zxczxcvzxcvb wrote: Tue Aug 18, 2020 11:46 am
สอบถามข้อมูลเพิ่มเติมครับ
ถ้าสมมุติเรากำหนดให้ใส่ข้อมูลใน Textbox1 ได้สามตัวแล้ว
อยากให้เคอร์เซอร์เลื่อนไปอยู่ TextBox2 เอง
จะใช้ Code ไหนครับ
น่าจะเป็นการ SetFocus ครับ ~~>
https://www.snasui.com/viewtopic.php?f= ... cus#p26130