首页 > 解决方案 > Excel 复选框值属性在极少数情况下无法设置

问题描述

我有一个脚本可以更改 Excel 工作表中两个复选框的检查状态。完整的程序是:

  1. 打开 Excel 模板文件
  2. 填写一些数据,其中一个步骤是使用下面的子
  3. 将文件保存在特定位置

因此,文件模板始终相同。在某些情况下(<5% 的时间),例程在下面两行中的第一行的 sub 中失败sh.ControlFormat.Value = -4146并出现错误

Microsoft Excel: Die Value-Eigenschaft des CheckBox-Objektes kann nicht festgelegt werden.

这可能是英文错误信息的翻译

Unable to Set the Value property of the CheckBox Class

如果发生这种情况,您可以关闭文件,再次启动完全相同的例程,到目前为止,它对我来说一直有效。由于我正在遍历所有形状,检查它们的类型,检查它们的表单控制类型,然后检查单个名称,我不确定这仍然是如何失败的,因为文件显然是打开的、可访问的和正确的表单控制元素已被发现。

知道如何减轻这种情况吗?我会对任何可能导致此类错误的见解感到满意,以便找到解决方法。理想情况下,比简单地检测它并告诉用户出现问题更好的方法,请关闭 excel 并重试

Sub modify_ci(oExcel, inp_cib)
    
    Set sheet = oExcel.ActiveWorkbook.ActiveSheet
    
    For Each sh in sheet.Shapes
        If sh.Type = 8 Then ' 8 => msoFormControl
            If sh.FormControlType = 1 Then ' 1 => xlCheckBox
                If(sh.Name = "chkbox_ci_yes") Then
                    If(inp_cib = "true") Then
                        sh.ControlFormat.Value = 1
                    Else
                        sh.ControlFormat.Value = -4146
                    End If
                ElseIf(sh.Name = "chkbox_ci_no") Then
                    If(inp_cib = "false") Then
                        sh.ControlFormat.Value = 1
                    Else
                        sh.ControlFormat.Value = -4146
                    End If
                End If
            End If
        End If
    Next
End Sub

标签: excelvbscript

解决方案


推荐阅读