如何修复打开文件时移动的activeXcheckbox

我知道这个问题已经被问过,但是我没有find一个好的答案。 我不能做Windows更新,因为这种forms是在全国各地的多台电脑上使用。

我有24个默认隐藏的checkbox,它们根据combobox的值变得可见。 如果我保存checkbox被隐藏的文件,一旦我打开它的所有checkbox将在一个地方(不是他们所在的地方)。 如果我保存的checkbox是可见的,那么我打开它的一切工作完全正常。

这是坏的 坏 这是好的 好

唯一的办法,我得到它的工作是,如果我保存所有的checkbox被隐藏,然后我隐藏他们,当工作簿打开。 这可能是一个问题,如果用户没有妥善保存。 喜欢这个

'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 = "" 

我试图改变checkbox的对象定位属性,但它似乎必须是Move but don't size with cells工作

我自己修好了 我的解决scheme是像这样每个checkbox设置一个单元格的位置

 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