当前位置:首页 > PPT文章 > 高手进阶 > PPT中动态控制内嵌图表显示

PPT中动态控制内嵌图表显示

时间:2021-08-04浏览:4 [ ]

  在excel中可以通过窗体或ActiveX控件达到动态控制图表显示的目的,但当Excel图表作为对象内嵌到PPT后,在PPT播放模式下,所有在Excel对象中的控件都是不可选的,只能在PPT的编辑模式下双击对象后在Application.Excel中进行控制。那么怎样才能在PPT播放模式下可以控制插入的Excel图表动态显示?一个方法是借助PPT中的VBA编程,用PPT中的ActiveX控件(注意在PPT中没有窗体工具中的控件)控制内嵌的Excel对象中的相关单元格区域,达到动态控制。这里指的ActiveX控件就是在“视图》工具栏》控件工具箱”中的控件。

  下面介绍具体的步骤:

  1.在PPT的编辑模式下需要插入图表的页面中用“插入》对象》Microsoft Excel图表”插入一个内嵌的Excel图表,编辑数据及图表(最好是用一个图表工作表显示图表),用一个工作表中的单元格放入数据作为控制图表显示的单元格(这个只是为了方便理解,其实用VBA不要辅助单元格也可以直接改变图表数据引用的)。

  2.退出Excel编辑,在PPT选择“视图》工具栏》控件工具箱”打开“控件工具箱”,在图表所在页插入一个组合框。 插入“组合框”控件后,按Alt+F11就可以在VBE中看到工程中显示出了一个Slide对象(只有加入了ActiveX控件后才能在工程资源管理器中出现Slide对象),如图

1.jpg

  3.在VBE的Slide对象相应的模块中加入如下代码: Option Explicit

  '声明公共变量

  Dim Wb As Object, Sh As Object, SouceRng As Object, TarCell As Object

  '当控件获得焦点时运行

  Private Sub ComboBox1_GotFocus()

  Dim i As Integer

  '设置Wb为内嵌的Excel工作薄,Sh为指定工作表,SouceRng和TarCell为指定单元格区域

  Set Wb = Me.Shapes(1).OLEFormat.Object 'Me表示正在播放的Slide

  Set Sh = Wb.worksheets("sheet1")

  Set SouceRng = Sh.Range("B1:D1")

  Set TarCell = Sh.Range("F1")

  With ComboBox1

  '先清除列表

  If .ListCount > 0 Then

  .ListIndex = -1

  For i = .ListCount - 1 To 0 Step -1

  .RemoveItem i

  Next i

  End If

  '加入列表项

  For i = 1 To SouceRng.Count

  .AddItem SouceRng.offset(0. i - 1).Range("A1")

  Next i

  '选择第一项

  .ListIndex = 0

  '修改TarCell单元格中的值

  TarCell = .Value

  End With

  End Sub

  4.在VBE的Slide对象相应的模块中再加入如下代码: ‘当控件失去焦点时运行释放对象变量

  Private Sub ComboBox1_LostFocus()

  Set TarCell = Nothing

  Set SouceRng = Nothing

  Set Sh = Nothing

  Set Wb = Nothing

  End Sub

  ‘当控件值改变时运行对内嵌工作薄单元格的改变

  Private Sub ComboBox1_Change()

  '改变内嵌工作薄中相应单元格的值

  TarCell = ComboBox1.Value

  End Sub

复制本文链接文章为作者独立观点不代表优设网立场,未经允许不得转载。