版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
由于PPT中有多张类似但不太重要的图表,实际汇报时只挑重点说明,其他的基本略过。因此有必要用可选的方式将这些图表折叠到一张PPT中,为PPT瘦身。
参考资料:

A. 首先要解决内嵌图表的控制问题,无极玄易生在文档“演示PPT中动态控制内嵌图表显示”中已列出可用的代码。
B. 其次是图表本身动态更新的问题,实现方法有很多,不熟悉的朋友可以参考小猪也无奈分享的经验【Excel】INDEX函数制作动态图表,里面已经解说得很清楚了。
C. 再是放映时进入事件的触发问题,大梦空间的博文PowerPoint在播放时自动运行宏中有一些示例。

废话不多说,功能实现步骤如下:

  1. 内嵌图表类型问题。本文使用的是“插入”→“对象”→“Microsoft Excel Chart”
  2. 内嵌图表更新问题。按参考资料B做个全套(Excel数据源、控件数据源、图表数据源、目标单元格)也没关系,仅仅是Excel内置的窗体控件无法在PPT放映时使用罢了。这里需要提示的是,内嵌图表的数据源可以用“粘贴链接”的方式从独立的Excel报表中获取,从而实现动态更新数据源
  3. 内嵌图表格式问题。每个人都要自己的审美,格式方面自己把握,顺便检查一下动态更新时格式是否正常
  4. VBA代码优化记录(无极玄易生的代码可用,但体验不太友好):
    4.1 消除控件操作延迟:原文在获得焦点时更新控件清单,导致选中控件后控件变形,并且必须等待几秒才能正常使用,改为OnSlideShowPageChange事件后不再延迟。
    4.2 减少冗余代码:使用slide2.Shapes(2).OLEFormat.Object的绝对引用方式可避免选错对象,.Clear 可一步清空原备选清单,SourceRng.Offset(0, I - 1).Range(“A1”)偏移方式改为Sh.Range(“N” & I + 2)直引等。
    4.3 自定义调整:SourceRng、TarCell等参数可根据实际表格进行更新,If .ListIndex = -1 Then .ListIndex = 0 用于解决缺省参数显示出错的问题,前次选中的页面保存后即为默认显示项,不必每次重新定位为第一页
  5. 优化后代码如下:
Option Explicit
Dim Wb As Object, Sh As Object, SourceRng As Object, TarCell As Object    '有别于Excel对象,均为Object类型
Sub OnSlideShowPageChange()                             '首次放映时加载“备选项”清单到控件中
If ActivePresentation.SlideShowWindow.View.CurrentShowPosition = 1 ThenDim I As Integer, N As Integer, M As VariantSet Wb = slide2.Shapes(2).OLEFormat.Object          '设置Wb为内嵌的Excel工作簿Set Sh = Wb.worksheets("Sheet1")                    'Sh为指定工作簿Set SourceRng = Sh.Range("N3:N9")                   'SourceRng为备选项对应的单元格区域Set TarCell = Sh.Range("A17")                       'TarCel为目标项对应的单元格With slide2.ComboBox1M = .Value.Clear                                          '更新列表项,实际仅作用于更新后激活功能For I = 1 To SourceRng.Count.AddItem Sh.Range("N" & I + 2)If Sh.Range("N" & I + 2) = M Then N = I - 1Next IIf N = -1 Then.ListIndex = 0                              '缺省默认项则显示第一项Else.ListIndex = N                              '优先按默认项显示End IfTarCell = .Value                                '按目标项修改TarCell单元格的值End With
End If
End Sub
Private Sub Combobox1_change()
TarCell = ComboBox1.Value                               '改变内嵌工作簿中相应单元格的值
End Sub
Private Sub Combobox1_Gotfocus()                        '当控件获得焦点时赋值对象
Dim I As Integer
On Error Resume Next
Set Wb = slide2.Shapes(2).OLEFormat.Object
Set Sh = Wb.worksheets("Sheet1")
Set TarCell = Sh.Range("A17")
End Sub
Private Sub combobox1_lostfocus()                       '当控件失去焦点时释放对象
Set TarCell = Nothing
Set SourceRng = Nothing
Set Sh = Nothing
Set Wb = Nothing
End Sub
  1. 成品显示效果:

懒人专用链接::优先按默认项显示的功能未更新

PPT内置宏教程——放映时用控件切换动态图表相关推荐

  1. unity android 宏定义,Unity各平台内置宏定义

    属性 方法 UNITY_EDITOR #define directive for calling Unity Editor scripts from your game code. UNITY_EDI ...

  2. ppt设置外观样式_PPT办公技巧:PPT内置主题样式的3种运用办法

    运用PPT的内置主题样式可以快速对全部或局部幻灯片设置统一的主题颜色.字体.效果.背景样式,提高PPT制作效率.这篇文章我们来学习一下PPT内置主题的3种运用办法. 红色框线内均为PPT内置主题 一. ...

  3. C语言~宏操作大全(宏定义、内置宏、__FILE__、__LINE__、##用法)

    当然宏定义非常重要的,它可以帮助我们防止出错,提高代码的可移植性和可读性等.下面列举一些成熟软件中常用得宏定义1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDE ...

  4. 巧用可变参数宏、编译器内置宏和printf输出调试信息

    前言: 我们在写程序的时候,总是或多或少会加入一些printf之类的语句用于输出调试信息,但是printf语句有个很不方便的地方就是当我们需要发布程序的时候要一条一条的把这些语句删除,而一旦需要再次调 ...

  5. C语言宏定义、宏函数、内置宏与常用宏

    前言: 在C语言中,变量类型.循环控制.基础语法等与其他高级语言基本无异:而C语言(C++)特有的两把双刃剑指针和宏定义/宏函数使得C语言在底层开发中披荆斩棘.无所不能.这两个概念涉及范围比较广,其分 ...

  6. __iLINE__和__FILE__等内置宏的含义

    编译器内置宏: 先介绍几个编译器内置的宏定义,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息. ANSI C标准中有几个标准预定义宏(也是常用的): ...

  7. linux系统中查看gcc内置宏定义的命令方法

    GNU C预定义了一系列的宏,这些宏都是以双下划线开始的 查看内置宏的命令 gcc -dM -E - < /dev/null [qipa250@localhost ~]$ gcc -dM -E ...

  8. 搜索一个问题 C、C++判断操作系统 是 Linux还是windows 还是Unix【编译器内置宏 探索(不是特别满意)】...

    得到的答案 都不好.为什么,因为他们都不知道原理.其实原理很简单,编译器 参数或Makefile添加了宏定义,你才可以这样去判断. 比如编译器设置了宏 is_windows,你才能去用.不设置没法用. ...

  9. CEF中文教程(google chrome浏览器控件) -- CEF简介

    官方主页:  点击打开链接 CEF简介: 嵌入式Chromium框架(简称CEF) 是一个由Marshall Greenblatt在2008建立的开源项目,它主要目的是开发一个基于Google Chr ...

  10. qt中QHBoxLayout或QVBoxLayout布局内控件的动态生成与显示

    ---恢复内容开始--- qt中QHBoxLayout或QVBoxLayout布局内控件的动态生成与显示 打个比方,我现在写个小例子,这个小例子是这样的,整个界面分为俩个部分,分为上半部分和下半部分, ...

最新文章

  1. Python模块EasyGui专题学习
  2. 求两个集合是否有交集 c语言_高中数学:集合与函数概念知识点总结
  3. 来个“云”毕业典礼,这些装扮太硬核了!
  4. sql语句的经典练习
  5. 清空文件夹_回收站不小心被清空?简单3步即刻找回丢失文件,值得收藏!
  6. jQuery addClass
  7. 【leetcode】sort list(python)
  8. Debian 9 安装配置 Caddy Server
  9. 拓端tecdat|R语言多元逐步回归模型分析房价和葡萄酒价格:选择最合适的预测变量
  10. Unity零基础到入门 ☀️| 学会这些Unity常用组件,Unity中必备组件技能学习!
  11. python aiml开发文档_Python AIML搭建聊天机器人
  12. 我的世界服务器无限背包,我的世界 无限背包MOD 我的世界1.7无限背包MOD
  13. 3D迷宫(DirextX9)
  14. 电子技术基础(三)_第3章集成运放及其应用__反相比例运算
  15. 谷歌收购手势识别公司Flutter
  16. photo-sphere-viewer4 全景图插件应用
  17. 微信小程序客服消息(带流程图)
  18. 三种地球坐标系的区别
  19. 办公非常好用的网站,一旦使用就无法离开它
  20. 微信的充值和提现是什么意思

热门文章

  1. 高效的睡眠——睡眠革命
  2. 低延迟视频传输 UDP JPEG图像压缩 opencv
  3. python雷达成像(SAR)仿真:(三)徙动校正+方位压缩(完结)
  4. 从U盘还原完ghost系统,重启就提示bootmgr is missing
  5. Java 汉字获取拼音或首字母工具类
  6. 怎样保持下拉菜单截图?如何快速截图截图快捷键
  7. 微信的商户单号和交易单号_教你获取支付宝和微信的订单号、商户单号,涨知识了...
  8. python二元一次方程组用鸡兔同笼的思路来写编程_应用二元一次方程组——鸡兔同笼教学设计...
  9. 【VBA】Word批量改变图片的大小,进行排版
  10. 三地检方分别对程颖、谭元生、聂作坤案提起公诉