Excel形状位置受Windows显示缩放设置的干扰

问题描述 投票:1回答:1

我想在Excel中获得准确的Shape位置。我注意到Shape.Top受到Windows显示缩放设置的干扰。

要重现该错误,请右键单击工作表名称>查看代码>,然后将VBA代码粘贴到工作表VBA编辑器中。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
    On Error Resume Next
    ThisWorkbook.ActiveSheet.Shapes("BlueRectangle").Delete

    Dim sh As Object
    Set sh = ThisWorkbook.ActiveSheet.Shapes.AddShape(msoShapeRectangle, ActiveCell.Left, ActiveCell.Top, ActiveCell.Width, ActiveCell.Height)
    sh.Name = "BlueRectangle"
End Sub

此代码在双击单元格中创建Rectange形状。只要Windows设置的显示缩放设置为100%,一切正常。但是,当我们将Windows设置中的显示缩放更改为125%时,矩形的创建位置与活动单元格略有不同。每100行Excel的位置高度有1行不同。因此,当我单击A100单元格时,将在A99单元格中创建矩形。

我想更正位置矩形创建,以便考虑Windows缩放显示。

以下是100%显示缩放的行为: enter image description here

这是一个我想修复的错误行为,125%显示缩放: enter image description here

以下是我提出的相关不明显的挑战,这可能是回答这个问题的里程碑:Get Windows display zoom value

excel vba position screen-resolution
1个回答
1
投票

我无法重现你的问题。我正在使用150%,即使对于最后一个单元格,Excel中的定位也是正确的。

也没有什么需要纠正的。

但是您的代码可能存在一些问题:

  • 避免ThisWorkbook.ActiveSheet并使用Target.Parent这是更可靠的。
  • 同时避免使用ActiveCell并使用Target,因为ActiveCell可能尚未更改为您单击的单元格。 Target是你doubleclicket不是ActiveCell的单元格。

尝试下一步。我怀疑DPI是问题,我怀疑这是一个与qazxsw ppi相关的问题。

ActiveCell
© www.soinside.com 2019 - 2024. All rights reserved.