这是我在VBA的第一个程序。
我有一张excel表,其中包含多个问题,每个问题都有一个复选框,以使其可编辑或只读。
下面是一个例子
因此,引入两个复选框,使用它可以使它们只读或可编辑。
所以我尝试了一个vba代码来做同样的事情(通过谷歌搜索)。以下是代码段。
Private Sub CheckBox13_Click()
If Sheet3.CheckBox13.Value = False Then
Sheet3.Range("B20:CZ20").Interior.ColorIndex = 16
Range("B20:CZ20").Locked = True
ActiveSheet.Protect Contents:=True
Else
ActiveSheet.Protect Contents:=False
Range("B20:CZ20").Locked = False
Sheet3.Range("B20:CZ20").Interior.ColorIndex = 0
End If
End Sub
Private Sub CheckBox14_Click() 'eigth question Hide check box code
If Sheet3.CheckBox14.Value = False Then
Sheet3.Range("B21:CZ21").Interior.ColorIndex = 16
Range("B21:CZ21").Locked = True
ActiveSheet.Protect Contents:=True
Else
ActiveSheet.Protect Contents:=False
Range("B21:CZ21").Locked = False
Sheet3.Range("B21:CZ21").Interior.ColorIndex = 0
End If
End Sub
我的问题是:
错误1004,应用程序定义或对象定义错误。
如果我错过了任何基本信息以便了解问题,请告诉我。
答案 0 :(得分:0)
由于我们不知道问题出在哪里,我会尝试这样做:
Private Sub CheckBox13_Click()
If Sheet3.CheckBox13.Value = False Then
Sheet3.Protect Contents:=False
Sheet3.Range("B21:CZ21").Locked = False
Sheet3.Range("B20:CZ20").Interior.ColorIndex = 16
Sheet3.Range("B20:CZ20").Locked = True
Sheet3.Protect Contents:=True
Else
Sheet3.Protect Contents:=False
Sheet3.Range("B20:CZ20").Locked = False
Sheet3.Range("B20:CZ20").Interior.ColorIndex = 0
End If
End Sub
Private Sub CheckBox14_Click()
If Sheet3.CheckBox14.Value = False Then
Sheet3.Protect Contents:=False
Sheet3.Range("B21:CZ21").Locked = False
Sheet3.Range("B21:CZ21").Interior.ColorIndex = 16
Sheet3.Range("B21:CZ21").Locked = True
Sheet3.Protect Contents:=True
Else
Sheet3.Protect Contents:=False
Sheet3.Range("B21:CZ21").Locked = False
Sheet3.Range("B21:CZ21").Interior.ColorIndex = 0
End If
End Sub
详细信息:
Sheet3
(并且用Sheet3替换了ActiveSheet),你没有修改另一张。ActiveSheet.Protect Contents:=False - Sheet3.Range("B21:CZ21").Locked = False
,以确保范围不受保护。