如何修复打开文件时移动的 activeX 复选框

How to fix activeX checkboxes moving when opening file

我知道以前有人问过这个问题,但我没有找到适合我的答案。我无法执行 windows 更新,因为该表格在全国多台计算机上使用。

我有 24 个默认隐藏的复选框,它们根据组合框的值变得可见。如果我在隐藏复选框的情况下保存文件,一旦我打开它,所有复选框将位于一个位置(而不是它们应该位于的位置)。如果我在复选框可见的情况下保存它,那么我打开它一切正常。

这个不好 这个不错

我让它工作的唯一方法是,如果我在隐藏所有复选框的情况下保存它,然后在工作簿打开时隐藏它们。如果用户没有正确保存,这可能是个问题。 像这样

 'if the row the row is hidden then the 2 checkboxes on this row are hidden too
 ActiveSheet.Rows("54:101").Hidden = False

 'Hide rows 54 to 101
 ActiveSheet.ComboBox2.Value = ""
 ActiveSheet.ComboBox3.Value = ""

我尝试更改复选框的对象定位 属性,但似乎必须 Move but don't size with cells 才能起作用

我自己修好了。我的解决方案是像这样为每个复选框设置一个单元格的位置

Dim rng As Range
Set rng = ActiveSheet.Range("H65")
With ActiveSheet.OLEObjects("CheckBox223")
    .Top = rng.Top
    .Left = rng.Left
    .Width = rng.Width
    .Height = rng.RowHeight
End With

 Set rng = ActiveSheet.Range("J65")
 With ActiveSheet.OLEObjects("CheckBox224")
    .Top = rng.Top
    .Left = rng.Left
    .Width = rng.Width
    .Height = rng.RowHeight
End With

 Set rng = ActiveSheet.Range("H69")
 With ActiveSheet.OLEObjects("CheckBox221")
    .Top = rng.Top
    .Left = rng.Left
    .Width = rng.Width
    .Height = rng.RowHeight
End With

 Set rng = ActiveSheet.Range("J69")
 With ActiveSheet.OLEObjects("CheckBox222")
    .Top = rng.Top
    .Left = rng.Left
    .Width = rng.Width
    .Height = rng.RowHeight
End With

 Set rng = ActiveSheet.Range("H73")
 With ActiveSheet.OLEObjects("CheckBox219")
    .Top = rng.Top
    .Left = rng.Left
    .Width = rng.Width
    .Height = rng.RowHeight
End With

 Set rng = ActiveSheet.Range("J73")
 With ActiveSheet.OLEObjects("CheckBox220")
    .Top = rng.Top
    .Left = rng.Left
    .Width = rng.Width
    .Height = rng.RowHeight
End With