Page 1 of 2
ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Mon Oct 21, 2019 7:57 pm
by yodpao.b
ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
1.JPG
2.JPG
คำถาม เมื่อใส่ Protect table จะไม่ทำงานถูกต้องแล้วใช่ไหมครับพอมีวิธีแก้ไขให้ table ทำงานได้ไหมครับ
เนื่องจากในตารางบางช่องเป็นสูตรจึงทำการล็อคเชลครับ
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Mon Oct 21, 2019 9:06 pm
by snasui

แก้ด้วยทำงานด้วย Code ครับ ลักษณะจะเป็นตามด้านล่างครับ
ปลด Lock > บันทึกข้อมูล > Lock
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Mon Oct 21, 2019 9:30 pm
by yodpao.b
ขอบคุณครับ
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Tue Oct 22, 2019 12:32 am
by yodpao.b
พอคิดออกแล้วครับ
ขั้นแรก ล็อคก่อน
ขั้น 2 ปลดล็อค
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
MsgBox "Finish adding"
End If
End Sub
code ด้านบนหมายถึง เมื่อคลิกเชลใดในคอลัม B ให้ปลดล็อค
ขั้น 3 ล็อค
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
MsgBox "Finish sssssssssss adding"
End If
End Sub
code ด้านบนหมายถึง เมื่อพิมพ์ข้อความแล้วจึงไปเลือกเซลอื่นๆ ให้ล็อค
คำถาม
ขอ เปลี่ยน code ในขั้นตอนที่ 3 เป็น เมื่อออกจากเซล B:B ให้ทำการล็อค
(หมายถึงไม่ต้องพิมพ์ก็สามารถ ล็อคได้)
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Tue Oct 22, 2019 6:58 am
by snasui

ตัวอย่าง Code ครับ
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
'Protect
Else
'Unprotect
End If
End Sub
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Tue Oct 22, 2019 7:44 pm
by yodpao.b
ผมลองใช้ตามอาจารย์
โดยใช้ msgbox แทนการใช้ protect
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
MsgBox "Finish adding" ' protect
Else
MsgBox "Finish aaaaaaaaaaaaaaaaadding" ' un protect
End If
End Sub
ผลที่ได้ดังนี้
เมื่อคลิกเซลใดใดที่ไม่ใช่ช่อง B จะขึ้น MsgBox "Finish aaaaaaaaaaaaaaaaadding" ตัวนี้ตลอด
ยังไม่ถูกต้องนัก
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Tue Oct 22, 2019 7:50 pm
by yodpao.b
ผมลองใช้
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
MsgBox "Finish adding 1 'protect
MsgBox "Finish adding 2 'Unprotect
End If
End Sub
ได้ตามต้องการ
table ผล ออกมาให้ เป็นเส้นตาราง
เดียวขอลองดูก่อนครับว่ามีผลเสียข้างเคียงใดบ้าง
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Tue Oct 22, 2019 8:15 pm
by snasui
yodpao.b wrote: Tue Oct 22, 2019 7:44 pm
ผลที่ได้ดังนี้
เมื่อคลิกเซลใดใดที่ไม่ใช่ช่อง B จะขึ้น MsgBox "Finish aaaaaaaaaaaaaaaaadding" ตัวนี้ตลอด
ยังไม่ถูกต้องนัก

ขึ้นอยู่ว่าต้องการให้แสดงผลลัพธ์เป็นแบบไหน อย่างไร Code สามารถเขียนให้สลับกันได้ในส่วนของ If...Then...Else ไม่ใช่ว่าจำเป็นต้องใช้ตรงไปตรงมาตามนั้น สามารถปรับเปลี่ยนเองได้ครับ
ถ้าต้องการผลลัพธ์แบบเจาะจงก็ควรตั้งคำถามให้เจาะจง อธิบายถึงสิ่งที่ต้องการและแนบไฟล์พร้อม Code ที่ติดปัญหามาด้วยครับ
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Tue Oct 22, 2019 8:41 pm
by yodpao.b
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
ActiveSheet.Unprotect
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowFiltering:=True, AllowUsingPivotTables:=True
End If
End Sub
โดคที่ผมเขียนใช้ไม่ได้ครับ ตารางไม่แสดงช่องเพิ่ม
ขั้นตอนที่ต้องการคามรูปครับ
0.JPG
1.JPG
2.JPG
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Tue Oct 22, 2019 8:42 pm
by yodpao.b
ไฟล์ครับ
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Tue Oct 22, 2019 8:52 pm
by yodpao.b
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
ActiveSheet.Unprotect
Else
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowFiltering:=True, AllowUsingPivotTables:=True
End If
End Sub
โตดอาจารย์ถูกต้องครับ
แต่เวลาคลิก ช่องอื่นมันจะ Protect ทุกครั้งเลย (มันทำให้เกิดปัญหาเวลาจะทำอะไรเพิ่มกับหน้านี้ไม่ได้เลยในเวลาที่เราปลด Protect เพื่อทำอพไรเพิ่มเติมที่ไม่เกียวกับในตาราง)
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Tue Oct 22, 2019 9:00 pm
by snasui
yodpao.b wrote: Tue Oct 22, 2019 8:52 pm
โตดอาจารย์ถูกต้องครับ
แต่เวลาคลิก ช่องอื่นมันจะ Protect ทุกครั้งเลย (มันทำให้เกิดปัญหาเวลาจะทำอะไรเพิ่มกับหน้านี้ไม่ได้เลยในเวลาที่เราปลด Protect เพื่อทำอพไรเพิ่มเติมที่ไม่เกียวกับในตาราง)
ค่อยๆ ถามตอบกันไปและ
กรุณาวาง Code ให้เป็นข้อความ Code เสมอครับ
ขั้นตอนแรกซึ่งสำคัญอย่างยิ่ง ช่วยอธิบายว่าต้องการให้ปลดการป้องด้วยกันเหตุการณ์ใด และป้องกันกลับไปใหม่ด้วยเหตุการณ์ใดครับ
การกำหนดว่า คลิกคอลัมน์ใด ๆ แล้วปลดการป้องกัน พอคลิกคอลัมน์อื่น ๆ แล้วให้ป้องกัน ลักษณะ Code แบบนี้ย่อมทำงานใดไม่ได้ ดังนั้น จะต้องกำหนดเหตุการณ์ในการปลดการป้องกันและการป้องกันไม่ให้ขัดกับการทำงานครับ
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Tue Oct 22, 2019 10:27 pm
by yodpao.b
ปลดการป้อง เหตุการณ์ เมื่อพิมพ ในช่อง ฺB:B
ใส่การป้องกัน เหตุการณ์ เมื่อพิมพแล้วเสร็จตารางจะเกิดขึ้น
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Tue Oct 22, 2019 10:34 pm
by snasui

ปกติก่อนพิมพ์จะมีการป้องกันเอาไว้ย่อมไม่สามารถพิมพ์ได้อยู่แล้ว ดังนั้นเหตุการณ์นี้ไม่ควรจะใช้กำหนดให้ปลดการป้องกันได้ครับ
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Tue Oct 22, 2019 11:13 pm
by yodpao.b
ปลดได้ครับ เนื่องจากในช่อง ฺB:B ผมนำการป้องกันที่อยู่ในฟอรแมทเชลออก
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Tue Oct 22, 2019 11:18 pm
by snasui

กรณีกำหนดให้เซลล์นั้นมีการแก้ไขได้ หากกำหนดการปลดการป้องกันเมื่อพิมพ์ ไม่สามารถทำได้
ป้องกันเมื่อพิมพ์เสร็จสามารถทำได้ครับ
กรุณาทำความเข้าใจว่าพิมพ์กับพิมพ์เสร็จมันคือเหตุการณ์เดียวกัน
ไม่ใช่แยกเป็น 2 เหตุการณ์ คือ พิมพ์เหตุการณ์หนึ่งและพิมพ์เสร็จเหตุการณ์หนึ่งแต่อย่างใดครับ
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Tue Oct 22, 2019 11:34 pm
by yodpao.b
อาจารย์ครับ ถ้าอย่างนั้น เปลี่ยนเป็น
ปลดการป้อง เหตุการณ์ เมื่อพิมพ ในช่อง ฺB:B
ใส่การป้องกัน เหตุการณ์ เมื่อพิมพ ในช่อง ฺC:C
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
ActiveSheet.Unprotect
' MsgBox "Finish adding " ' Unprotect
End If
If Not Application.Intersect(Target, Range("C:C")) Is Nothing Then
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowFiltering:=True, AllowUsingPivotTables:=True
' MsgBox "Finish adding1111111111111111 " ' Protect
End If
ผมใช้ code นี้ protect ทำงานได้ตามต้องการ แต่ table ไม่ทำงานครับ
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Tue Oct 22, 2019 11:36 pm
by snasui

กรุณาแนบไฟล์ตัวอย่างประกอบ จะได้ช่วยทดสอบให้ได้ครับ
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Wed Oct 23, 2019 12:24 am
by yodpao.b
แนบไฟล
Re: ใช้ table คู่กับ Protect ทำงานบางอย่างไมได้ครับ
Posted: Wed Oct 23, 2019 7:31 am
by snasui

ตัวอย่าง Code ครับ
Code: Select all
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
ActiveSheet.Unprotect
Target.Value = Target.Value
End If