如何在Excel工作表中获取当前视图端口的坐标?

时间:2011-11-30 10:42:35

标签: excel charts excel-vba viewport vba

我需要在Excel工作表的中心放置一个图表,就在用户当前正在查看的位置。 显然0是纸张坐标系X轴的最开始,当我们向右移动时X增加。例如,用户可能正在查看J到Z列,我需要用户正在查看的工作表中的位置坐标,因此我可以将图表放在他面前。

如何获取相对于工作表坐标系的工作表“视口”的坐标? 是否还有其他更简单的方法可以将图表放在那里?

感谢。

1 个答案:

答案 0 :(得分:4)

你可以试试像

这样的东西
Sub test()
    MsgBox Application.ActiveWindow.ActivePane.VisibleRange.AddressLocal
End Sub

在我的情况下,它打开内容为$A$271:$X$312的msgbox 我希望这能帮到你。

编辑:

好的,试着用X Y坐标计算出来并得到以下结果:

Sub TestPixel()
    With Range(ActiveWindow.ActivePane.VisibleRange.AddressLocal)
        Debug.Print .Left, .Top
        Debug.Print .Left + .Width, .Top + .Height
    End With
End Sub

打印出左上角的x / y坐标和右下角的x / y坐标

编辑第2期:

花了几分钟时间,用我的testworkbook完成了你的任务。 这是makro:

Sub PositionDiagramm()
    Dim x As Integer
    Dim y As Integer

    Dim height As Integer
    Dim width As Integer

    With Range(ActiveWindow.ActivePane.VisibleRange.AddressLocal)
        x = .Left
        y = .Top
        width = .Width
        height = .Height
    End With

    With ActiveSheet.Shapes("Diagramm 1")
    .Top = y + ((height - .Height) / 2)
    .Left = x + ((width - .Width) / 2)
    End With
End Sub