Excel复选框在每个电子表格

时间:2015-07-13 14:27:10

标签: excel vba excel-vba debugging checkbox

我遇到了一个“bug”的问题,它会移动复选框

为了解决这个问题,我写了一个快速的小vba代码,让它们保持一致

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,Cancel As Boolean)

With Sheet3.Shapes("Group 5")
    .Top = Range("B6").Top + Range("B6").Height / 2 - .Height / 2
    .Left = Range("B6").Left + Range("B6").Left / 2
End With

End Sub

这样可以正常工作但是如果低于第5组,我会从表4中添加一个形状,当我不想要它们时它们会移动。

因此,如果我保存在第3张纸上,所有纸张3将移动到正确的位置(这很好)。然后,如果我点击第4页,它们会稍微转移一下,反之亦然。有谁知道为什么会发生这种情况?

感谢。

2 个答案:

答案 0 :(得分:0)

由于您正在使用With,请使用以下方法进行调整:

With Sheet3
    .Shapes("Group 5").Top = .Range("B6").Top + Range("B6").Height / 2 - .Height / 2
    .Shapes("Group 5").Left = .Range("B6").Left + Range("B6").Left / 2
End With

我认为应该可行,如果没有,只需添加“Sheet3”。在两个范围(“B6”)之前。这将明确表示使用的范围是该表。我认为发生的事情是当您切换工作表时,范围会更改为您激活的新工作表上的B6。

编辑:另外,我假设“Sheet3”是一个工作表变量?否则,您需要表格(“Sheet3”)

答案 1 :(得分:0)

希望我能正确理解您的问题。如果您希望形状相对于工作表边界保持在同一位置,而不管工作表中发生的情况如何,可以将Object Positioning选项设置为Don't move or size with cells.,方法是右键单击形状,单击Format Control,然后选择Properties标签,您将在此处看到该选项。然后,您不需要VBA代码即可对其进行调整。