我在Excel中创建了一个宏,可以旋转3D图表。我将图表复制到PowerPoint中,并设置代码在幻灯片显示时运行。代码运行,但我无法让它实际更改屏幕上显示的内容。当幻灯片处于编辑模式时,图形会旋转。有什么办法可以让代码不仅仅运行(我可以看到调试数字出现),而且在演示模式下更新屏幕吗?我的代码如下:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Sub SpinTheChart()
RotateX = ActivePresentation.Slides(2).Shapes(2).Chart.ChartArea.Format _
.ThreeD.RotationX
Do While ActivePresentation.SlideShowWindow.View.CurrentShowPosition = 2
RotateX = RotateX + 7
If RotateX > 360 Then RotateX = RotateX - 360
ActivePresentation.Slides(2).Shapes(2).Chart.ChartArea.Format _
.ThreeD.RotationX = RotateX
DoEvents
Sleep 125
Debug.Print RotateX
Loop
End Sub
Sub OnSlideShowPageChange()
Dim i As Integer
i = ActivePresentation.SlideShowWindow.View.CurrentShowPosition
If i = 2 Then SpinTheChart
End Sub
更新:
我仍在努力解决这个问题。似乎有些建议说,要更新当前显示的图表,需要在 DoEvents 以下使用以下代码:
SlideShowWindows(1).View.GotoSlide SlideSowWindows(1).View.CurrentShowPosition
但是这并不起作用。它会退出正在运行的任何代码。因此,第一个函数中的Do/Loop被退出,它不会进入第二次迭代。
SlideShowWindows
被拼错了。 - Instant Breakfast