excel vba 图表.top 和单元格.top 位置不一致
excel vba chart .top and cell .top position not consistent
我正在使用 excel vba 生成多个图表。我一直在将 table 数据放在作品 sheet 上,并在顶部生成图表以隐藏 table。除非您使用单元格地址 .TOP 进一步向下 sheet 并将图表 .TOP 设置为相同的值,否则不会产生相同的结果。
第一个图表
当我检查活动单元格 B3 .top = 28.8
当我检查选定的图表 test1 并查看 activechart.parent.top = 28.9500007629394
picture showing cells(3,2).Top, and activechart.top circled in red the chart table is in cells(7,4) obscured by chart as desired
如果您向下滚动 20 个图表...
[图片显示图表的第 20 次迭代未隐藏 table 使用与上面相同的生成的 .Top ][2]
当我检查活动单元格 B573 .top = 8236.8
当我检查选定的图表 test20 并查看 activechart.parent.top = 8236.7998046875
在单元格 b573 中使用标记 X 应该被覆盖,但图表的顶部在视觉上位于 b579,显示在下方 6 行并公开所有 table 信息。
我看到有人提到缩放会导致问题,我现在是缩放 = 100%
我也许可以捏造这个,但我不确定它是否适用于任何地方。
我乐于接受想法。
用两个例程偷看ActiveChart.Parent.top和activecell.top
Sub Button4_Click() 'select the chart you want to see .TOP in Q1
Sheet1.Range("Q1").Value = ActiveChart.Parent.Top
End Sub
Sub Button5_Click() 'select the cell you want to see .TOP in T1
Sheet1.Range("T1").Value = ActiveCell.Top
End Sub
Sub PlotDrift()
Dim origin As Range
Dim rngToChart As Range
Dim iLoop As Integer
For iLoop = 0 To 20
Set origin = Sheet1.Range("d" & iLoop * 30 + 7)
origin.Offset(0, 1) = "red"
origin.Offset(0, 2) = "blue"
origin.Offset(1, 0) = "test" & (1 + iLoop)
origin.Offset(1, 1) = "62.0%"
origin.Offset(1, 2) = "38.0%"
origin.Offset(-4, -2).Value = "X" ' top left cell that should be covered.
Set rngToChart = Sheet1.Range(origin.Offset(0, 0), origin.Offset(1, 2))
rngToChart.Select
Dim ChartRange As Range
Set ChartRange = rngToChart.Offset(-4, -2).Resize(RowSize:=18, ColumnSize:=9)
ttop = ChartRange.Top
TLeft = ChartRange.Left
TWidth = ChartRange.Width
THeight = ChartRange.Height
' rngtochart... is selected so just add chart to plot it.
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered, TLeft, ttop, TWidth, THeight).Select
' document in column 1 what excel says it is doing.
origin.Cells(1, 1).Offset(-1, -3).Value = ChartRange.Top
origin.Cells(1, 1).Offset(-2, -3).Value = ActiveChart.Parent.Top
Next iLoop
End Sub
不对齐是我的非主显示器特有的,是由 Windows 设置 修复应用程序缩放.
引起的
我问过一个关于生成的复选框对齐的类似 Whosebug 问题 ,发现问题在我的电子表格示例中消失了。我最近重新审视了这个问题,发现问题在保存的电子表格中再次出现。
我重新启动了计算机并在主显示器而不是扩展显示器上打开了保存的电子表格,然后问题就消失了。
所以我查看了显示器设置并注意到一个标有 高级显示器设置 的设置,在该设置下 修复应用程序的缩放 。 修复应用程序的缩放 注意它只适用于主显示器。我已将其关闭,.left 和 .top 现在在两台显示器之间保持一致。
我正在使用 excel vba 生成多个图表。我一直在将 table 数据放在作品 sheet 上,并在顶部生成图表以隐藏 table。除非您使用单元格地址 .TOP 进一步向下 sheet 并将图表 .TOP 设置为相同的值,否则不会产生相同的结果。
第一个图表
当我检查活动单元格 B3 .top = 28.8
当我检查选定的图表 test1 并查看 activechart.parent.top = 28.9500007629394
picture showing cells(3,2).Top, and activechart.top circled in red the chart table is in cells(7,4) obscured by chart as desired
如果您向下滚动 20 个图表... [图片显示图表的第 20 次迭代未隐藏 table 使用与上面相同的生成的 .Top ][2]
当我检查活动单元格 B573 .top = 8236.8
当我检查选定的图表 test20 并查看 activechart.parent.top = 8236.7998046875
在单元格 b573 中使用标记 X 应该被覆盖,但图表的顶部在视觉上位于 b579,显示在下方 6 行并公开所有 table 信息。
我看到有人提到缩放会导致问题,我现在是缩放 = 100%
我也许可以捏造这个,但我不确定它是否适用于任何地方。
我乐于接受想法。
用两个例程偷看ActiveChart.Parent.top和activecell.top
Sub Button4_Click() 'select the chart you want to see .TOP in Q1
Sheet1.Range("Q1").Value = ActiveChart.Parent.Top
End Sub
Sub Button5_Click() 'select the cell you want to see .TOP in T1
Sheet1.Range("T1").Value = ActiveCell.Top
End Sub
Sub PlotDrift()
Dim origin As Range
Dim rngToChart As Range
Dim iLoop As Integer
For iLoop = 0 To 20
Set origin = Sheet1.Range("d" & iLoop * 30 + 7)
origin.Offset(0, 1) = "red"
origin.Offset(0, 2) = "blue"
origin.Offset(1, 0) = "test" & (1 + iLoop)
origin.Offset(1, 1) = "62.0%"
origin.Offset(1, 2) = "38.0%"
origin.Offset(-4, -2).Value = "X" ' top left cell that should be covered.
Set rngToChart = Sheet1.Range(origin.Offset(0, 0), origin.Offset(1, 2))
rngToChart.Select
Dim ChartRange As Range
Set ChartRange = rngToChart.Offset(-4, -2).Resize(RowSize:=18, ColumnSize:=9)
ttop = ChartRange.Top
TLeft = ChartRange.Left
TWidth = ChartRange.Width
THeight = ChartRange.Height
' rngtochart... is selected so just add chart to plot it.
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered, TLeft, ttop, TWidth, THeight).Select
' document in column 1 what excel says it is doing.
origin.Cells(1, 1).Offset(-1, -3).Value = ChartRange.Top
origin.Cells(1, 1).Offset(-2, -3).Value = ActiveChart.Parent.Top
Next iLoop
End Sub
不对齐是我的非主显示器特有的,是由 Windows 设置 修复应用程序缩放.
引起的我问过一个关于生成的复选框对齐的类似 Whosebug 问题
我重新启动了计算机并在主显示器而不是扩展显示器上打开了保存的电子表格,然后问题就消失了。
所以我查看了显示器设置并注意到一个标有 高级显示器设置 的设置,在该设置下 修复应用程序的缩放 。 修复应用程序的缩放 注意它只适用于主显示器。我已将其关闭,.left 和 .top 现在在两台显示器之间保持一致。