excel - Excel 复选框值属性在极少数情况下无法设置
问题描述
我有一个脚本可以更改 Excel 工作表中两个复选框的检查状态。完整的程序是:
- 打开 Excel 模板文件
- 填写一些数据,其中一个步骤是使用下面的子
- 将文件保存在特定位置
因此,文件模板始终相同。在某些情况下(<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
解决方案
推荐阅读
- c# - 如何读取带前缀的文件字符串xml文件
- css - 背景附件:修复在 Firefox 中无法按预期工作
- java - Thymeleaf:无法处理来自 Spring Boot 的输入
- c# - 使用 dapper 将“SqlServer.Types.SqlGeometry”映射到“Microsoft.Spatial”类型,用于与 SQL Server 无关的地理代码
- php - How to get array, which contains different types of variable?
- firebase - Firebase Analytics | Possibility of choosing different configuration(JSON) based on selection of value from dropdown
- svg - vector graphics in MS VSTS Wiki
- android - OnOptionsItemSelected 未在 xamarin froms 中调用
- php - 如何将 mysql_fetch_array 转换为 CodeIgniter
- php - 在 PHP 中使用相同的 id 将数组放入 CSV 文件