我已经编写了一个代码,用于在一次点击时重新设置所有选项按钮,但是它给出了错误,“对象不支持属性或事项”。
Sub Add_New_Record()
Dim i As Integer
For i = 1 To 30
With Sheets("Form")
'-- unlock the worksheet
.Unprotect
.OptionButton(i).Value = False
'-- lock the worksheet
'.Protect
.Activate
.Range("Q12").Select
End With
Next i
End Sub
任何人都可以建议我如何修复代码,并将所有选项按钮的值设置为“false”。
我知道如何单独做到:
Sub Add_New_Record()
With Sheets("Form")
'-- unlock the worksheet
.Unprotect
.OptionButton1.Value = False
'-- lock the worksheet
'.Protect
.Activate
.Range("Q12").Select
End With
End Sub
但由于我的按钮太多,代码会变得非常长而且效率低下。
感谢您的帮助和时间。
答案 0 :(得分:1)
遍历特定工作表上的所有OLEObject,如果是选项按钮,则将其设置为false。
For i = 1 To ActiveSheet.OLEObjects.Count
If TypeName(ActiveSheet.OLEObjects(i).Object) = "OptionButton" Then
ActiveSheet.OLEObjects(i).Object = False
End If
Next i
在代码中嵌入此代码段:
Sub Add_New_Record()
With Sheets(1)
.Unprotect
For i = 1 To .OLEObjects.Count
If TypeName(.OLEObjects(i).Object) = "OptionButton" Then
.OLEObjects(i).Object = False
End If
Next i
.Protect
.Range("Q12").Select
End With
End Sub
阅读有关OLEObjects here
的更多信息答案 1 :(得分:0)
首先,With
语句应该在For
循环之前。它应该是.OptionButtons
。试试这个。
Sub Add_New_Record()
Dim i As Integer
With Sheets("Form")
.Unprotect
For i = 1 To 30
.OptionButtons(i).Value = False
Next i
.Protect
End With
End Sub