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

Charts 如何在Excel工作表中获取当前视图端口的坐标?,charts,excel,viewport,vba,Charts,Excel,Viewport,Vba,我需要将图表放在Excel工作表的中心,即用户当前正在查看的位置。 显然,0是图纸坐标系X轴的起点,X随着我们向右移动而增加。例如,用户可能正在查看J到Z列,我需要用户在工作表中查看位置的坐标,这样我就可以将图表放在他正前方 如何获取图纸“视口”相对于图纸坐标系的坐标? 有没有其他更简单的方法把图表放在那里 谢谢。你可以试试类似的东西 Sub test() MsgBox Application.ActiveWindow.ActivePane.VisibleRange.AddressLoc

我需要将图表放在Excel工作表的中心,即用户当前正在查看的位置。 显然,0是图纸坐标系X轴的起点,X随着我们向右移动而增加。例如,用户可能正在查看J到Z列,我需要用户在工作表中查看位置的坐标,这样我就可以将图表放在他正前方

如何获取图纸“视口”相对于图纸坐标系的坐标? 有没有其他更简单的方法把图表放在那里


谢谢。

你可以试试类似的东西

Sub test()
    MsgBox Application.ActiveWindow.ActivePane.VisibleRange.AddressLocal
End Sub
在我的例子中,它打开msgbox,内容为
$A$271:$X$312
我希望这对你有帮助

编辑:

好的,试着用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:

只花了几分钟,就用我的测试工作簿完成了你的任务。 这是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

你可以试试类似的东西

Sub test()
    MsgBox Application.ActiveWindow.ActivePane.VisibleRange.AddressLocal
End Sub
在我的例子中,它打开msgbox,内容为
$A$271:$X$312
我希望这对你有帮助

编辑:

好的,试着用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:

只花了几分钟,就用我的测试工作簿完成了你的任务。 这是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

让我再靠近一步,谢谢。但我需要可见范围的坐标(以像素为单位),因为图表需要屏幕坐标。有什么想法吗?很好。对代码的一些注释。首先,应该使用
Dim x作为整数,y作为整数
等等。它不像你写的那样工作。第二,你应该用英语写你的VAR,而不是德语,这对于任何非德语的人来说都会更容易阅读,谢谢你对Dim声明的评论。我刚刚读到没有
作为类型的变量被声明为变量。我不知道。对于变量名称:由于这是一个英文QA网站,我同意这一点。让我更进一步,谢谢。但我需要可见范围的坐标(以像素为单位),因为图表需要屏幕坐标。有什么想法吗?很好。对代码的一些注释。首先,应该使用
Dim x作为整数,y作为整数
等等。它不像你写的那样工作。第二,你应该用英语写你的VAR,而不是德语,这对于任何非德语的人来说都会更容易阅读,谢谢你对Dim声明的评论。我刚刚读到没有
作为类型的变量被声明为变量。我不知道。对于变量名称:由于这是一个英文QA网站,我同意这一点。