Excel VBA读取工作表单元格后设置CheckBox删除线属性失效问题
故障原因
- 你遇到的是特定版本(16.0.12527.20880)德语版Excel 365的已知本地化适配bug:VBA运行时中,工作表单元格值读取操作会意外修改窗体控件字体属性的内部赋值标记,导致后续对
CheckBox控件Font.Strikethrough的布尔赋值出现翻转,赋值False实际生效为True。 - 跨设备复现差异的原因是不同设备安装的Office版本、语言包版本不一致,非德语区域、版本号不在该区间的Office环境不会触发该底层逻辑错误。
可行的规避方案
- 方案1(最稳妥):修改删除线属性前先重置控件字体上下文,在赋值语句前增加一行
UserForm1.CheckBox1.Font.Name = UserForm1.CheckBox1.Font.Name,即可恢复赋值逻辑正常。 - 方案2:需要赋值
False前先反向赋值一次True抵消翻转bug,代码示例:UserForm1.CheckBox1.Font.Strikethrough = True UserForm1.CheckBox1.Font.Strikethrough = False Debug.Print UserForm1.CheckBox1.Font.Strikethrough ' 此时返回False符合预期 - 方案3:升级Excel 365到最新正式版,或切换为非德语语言包的Office版本,可永久解决该问题。
内容的提问来源于stack exchange,提问作者Albin
相关产品推荐
相关产品推荐

