Page 1 of 1

lock cell ไม่ให้แก้ไข แต่ต้องการให้แสดงเวลาใน cell นั้น แต่ VBA bug

Posted: Mon Jul 17, 2017 4:21 pm
by sooksun2009
ขอรบกวนท่านอาจาร์ย์ ช่วยแก่ไข VBA คือ ไม่อยากให้แก้ colume E,F แต่อยากให้แสดงเวลา เมื่อพิมพ์ที่colume B,D ตามFile แนบ ขอบคุณครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If ActiveCell.Column = 2 Then Range("E" & Target.Row) = Now()
If ActiveCell.Column = 4 Then Range("F" & Target.Row) = Now()
Application.EnableEvents = True
End Sub

Re: lock cell ไม่ให้แก้ไข แต่ต้องการให้แสดงเวลาใน cell นั้น แต่ VBA bug

Posted: Mon Jul 17, 2017 6:53 pm
by snasui
:D กรณีไม่ต้องการให้แก้พื้นที่ใด ๆ จะต้องทำการ Protect Worksheet เสียก่อนครับ

ลักษณะงานนี้จะมีขั้นตอนการทำงานคือ
  1. พื้นที่ใดก็ตามที่ต้องการให้แก้ไขใด้ให้คลุมพื้นที่นั้น จากนั้นกดแป้น Ctrl+1 เพื่อเปิดหน้าต่าง Format Cells > ไปที่แถบ Protection ปลดเครื่องหมายที่ Locked ส่วนพื้นที่ใดที่ไม่ต้องการให้แก้ต้อง Tick ให้เป็น Locked
  2. คลิกขวาที่แถบชีต > Protect Sheet > ระบุรหัสการป้องกันชีต > ระบุซ้ำ
  3. ปรับ Code เสียใหม่เป็น

    Code: Select all

    Private Sub Worksheet_Change(ByVal Target As Range)
       Application.EnableEvents = False
       ActiveSheet.Unprotect Password:="xxxx"
       If ActiveCell.Column = 2 Then Range("E" & Target.Row) = Now()
       If ActiveCell.Column = 4 Then Range("F" & Target.Row) = Now()
       Application.EnableEvents = True
       ActiveSheet.Protect Password:="xxxx"
    End Sub

Re: lock cell ไม่ให้แก้ไข แต่ต้องการให้แสดงเวลาใน cell นั้น แต่ VBA bug

Posted: Mon Jul 17, 2017 10:37 pm
by sooksun2009
snasui wrote::D กรณีไม่ต้องการให้แก้พื้นที่ใด ๆ จะต้องทำการ Protect Worksheet เสียก่อนครับ

ลักษณะงานนี้จะมีขั้นตอนการทำงานคือ
  1. พื้นที่ใดก็ตามที่ต้องการให้แก้ไขใด้ให้คลุมพื้นที่นั้น จากนั้นกดแป้น Ctrl+1 เพื่อเปิดหน้าต่าง Format Cells > ไปที่แถบ Protection ปลดเครื่องหมายที่ Locked ส่วนพื้นที่ใดที่ไม่ต้องการให้แก้ต้อง Tick ให้เป็น Locked
  2. คลิกขวาที่แถบชีต > Protect Sheet > ระบุรหัสการป้องกันชีต > ระบุซ้ำ
  3. ปรับ Code เสียใหม่เป็น

    Code: Select all

    Private Sub Worksheet_Change(ByVal Target As Range)
       Application.EnableEvents = False
       ActiveSheet.Unprotect Password:="xxxx"
       If ActiveCell.Column = 2 Then Range("E" & Target.Row) = Now()
       If ActiveCell.Column = 4 Then Range("F" & Target.Row) = Now()
       Application.EnableEvents = True
       ActiveSheet.Protect Password:="xxxx"
    End Sub
ขอบคุณมากครับอาจารย์