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

เพิ่ม 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
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

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
ใช้ได้ผลดีมากครับ ขอบพระคุณเป็นอย่างสูง สำหรับความเสียสละ