【问题标题】:Excel Checkboxes move on each spreadsheetExcel 复选框在每个电子表格上移动
【发布时间】:2018-07-01 10:10:18
【问题描述】:

我遇到了移动复选框的“错误”问题

为了解决这个问题,我写了一个简短的 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

结束子

这很好,但如果在第 5 组下方我从第 4 页添加一个形状,当我不希望它们移动时,它们会移动。

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

谢谢。

【问题讨论】:

    标签: vba excel debugging checkbox


    【解决方案1】:

    由于您使用的是 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”。在两个 Range("B6") 行之前。这将明确表明使用的范围是该工作表。我认为发生的情况是,当您切换工作表时,该范围会更改为您激活的新工作表上的 B6。

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

    【讨论】:

    • 当我当前的代码是 With Sheets("Sheet3") .Shapes("Group 5").Top = Sheet3.Range("B6").Top + Sheet3 .Range("B6").Height / 2 - .Height / 2 .Shapes("Group 5").Left = Sheet3.Range("B6").Left + Sheet3.Range("B6").Left / 2结束于
    【解决方案2】:

    希望我能正确理解您的问题。如果您希望某个形状相对于工作表边框保持在同一位置,无论工作表中发生什么,您可以将Object Positioning 选项设置为Don't move or size with cells. 您可以通过右键单击形状来执行此操作,单击Format Control然后选择Properties 选项卡,您将在那里看到该选项。那么你应该不需要VBA代码来调整它。

    【讨论】:

      猜你喜欢
      • 2020-05-22
      • 2018-07-19
      • 2015-02-17
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 2016-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多