Page 1 of 1

Lock Cell โดยขึ้นกับผลการคำนวน False True

Posted: Tue Nov 27, 2012 4:57 pm
by godman
สวัสดีครับ ผมติดปัญหาว่า ผมอยากให้มีการล้อคเซลล์ a1:k500 ใน worksheet active ที่ทำงานอยู่ เมือค่าจากสูตร cell v1 แสดงเป็น false ให้ล้อคตามโค้ดข้างล่าง พาสเวอร์ดคือ passowrd แต่ติดปัญหาว่ามัน error ผมอยากทราบว่าผมอยากจะเปลี่ยนโค้ดข้างล่างที่น่าจะใช้กับ checkbox มาเป็นใช้กับสูตรหรือค่าของ cell ต้องปรับตรงใหนครับ

Code: Select all

Sub lock_unlock()
    Dim Rng As Range
    Application.ScreenUpdating = False
    ActiveSheet.Unprotect Password:="password"
    Set Rng = ActiveSheet.Range("A1:K500")
    If ActiveSheet.CheckBox1.Value = True Then
        ActiveSheet.Range("V1").Value = "True"
        Rng.Locked = True
        ActiveSheet.PROTECT Password:="password"
    Else: Rng.Locked = False
        ActiveSheet.Range("V1").Value = "False"
        ActiveSheet.PROTECT Password:="password"
    End If
    Application.ScreenUpdating = True
End Sub

Re: Lock Cell โดยขึ้นกับผลการคำนวน False True

Posted: Tue Nov 27, 2012 10:07 pm
by snasui
:D เพิ่ม CheckBox เข้ามาก่อนแล้วปรับปรุง Code ตามด้านล่างให้ตรงกับชื่อของ CheckBox ที่เพิ่มเข้ามาครับ

Code: Select all

Sub lock_unlock()
    Dim Rng As Range
    Application.ScreenUpdating = False
    ActiveSheet.Unprotect Password:="password"
    Set Rng = ActiveSheet.Range("A1:K500")
    If ActiveSheet.Shapes("Check Box 13").ControlFormat.Value = xlOn Then
        'ActiveSheet.Range("V1").Value = "True"
        Rng.Locked = True
        ActiveSheet.PROTECT Password:="password"
    Else: Rng.Locked = False
        'ActiveSheet.Range("V1").Value = "False"
        ActiveSheet.PROTECT Password:="password"
    End If
    Application.ScreenUpdating = True
End Sub

Re: Lock Cell โดยขึ้นกับผลการคำนวน False True

Posted: Tue Nov 27, 2012 11:11 pm
by godman
ผมไม่ทราบว่าผมได้เข้าใจคำแนะนำหรือไม่ ผมได้ลองเพิ่มมาแล้วยังข error ตรงโค้ดแถ้วที่เขี้นว่า Shape(cHECKBOX1) ผมเข้าใจว่า CheckBox1 คือชื่อถูกไหมครับ

Code: Select all

Private Sub CheckBox1_Click()
Dim Rng As Range
    Application.ScreenUpdating = False
    ActiveSheet.Unprotect Password:="password"
    Set Rng = ActiveSheet.Range("A1:K500")
    If ActiveSheet.Shapes("CheckBox1").ControlFormat.Value = xlOn Then
        'ActiveSheet.Range("V1").Value = "True"
        Rng.Locked = True
        ActiveSheet.PROTECT Password:="password"
    Else: Rng.Locked = False
        'ActiveSheet.Range("V1").Value = "False"
        ActiveSheet.PROTECT Password:="password"
    End If
    Application.ScreenUpdating = True
End Sub

Re: Lock Cell โดยขึ้นกับผลการคำนวน False True

Posted: Tue Nov 27, 2012 11:19 pm
by snasui
:D
godman wrote: ผมได้ลองเพิ่มมาแล้วยังข error ตรงโค้ดแถ้วที่เขี้นว่า Shape(cHECKBOX1) ผมเข้าใจว่า CheckBox1 คือชื่อถูกไหมครับ
ไม่ถูกแน่นอนครับ ตรวจสอบว่า CheckBox ว่าชื่ออะไรโดยคลิกที่ CheckBox แล้วดูที่ Name Box ครับ

Re: Lock Cell โดยขึ้นกับผลการคำนวน False True

Posted: Wed Nov 28, 2012 12:34 pm
by snasui
:o CheckBox ที่ผมเขียน Code ไปให้นั้น ต้องสร้างด้วย Form Control ไม่ใช่ ActiveX Control ครับ

ตามไฟล์ที่แนบมาเป็น ActiveX Object ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Private Sub CheckBox1_Click()
    Dim Rng As Range
    Application.ScreenUpdating = False
    ActiveSheet.Unprotect Password:="password"
    Set Rng = ActiveSheet.Range("A1:K500")
'    If ActiveSheet.Shapes("CheckBox1").ControlFormat.Value = xlOn Then
    If ActiveSheet.OLEObjects("CheckBox1").Object.Value = True Then
        'ActiveSheet.Range("V1").Value = "True"
        Rng.Locked = True
        ActiveSheet.PROTECT Password:="password"
    Else: Rng.Locked = False
        'ActiveSheet.Range("V1").Value = "False"
        ActiveSheet.PROTECT Password:="password"
    End If
    Application.ScreenUpdating = True
End Sub

Re: Lock Cell โดยขึ้นกับผลการคำนวน False True

Posted: Wed Nov 28, 2012 3:36 pm
by godman
ใช้ได้ผลดีมากครับ ขอบพระคุณเป็นอย่างสูง สำหรับความเสียสละ