有没有办法从 Excel VBA 中的轴导出图表?

2024-03-26

我有许多用于操作 Excel 图表的通用 VBA 宏(例如,将一个图表叠加在另一个图表之上;重新缩放轴;或者通过键入公式向图表添加自定义曲线,例如“y = x^2 - 1”在文本框中)。这些宏是不带任何参数的子宏,我将它们存储在 .xlam 加载项中,并从 Excel 功能区上的链接按钮运行它们。要在特定图表上运行宏,请选择该图表,然后单击功能区上的按钮。

为了让宏知道它们正在操作哪个图表,我有一个这样的函数:

Function chart_from_selection() As Chart

  If TypeName(Selection) = "ChartArea" Or TypeName(Selection) = "PlotArea" Then
    Set chart_from_selection = Selection.Parent
  ElseIf TypeName(Selection) = "Series" Then
    Set chart_from_selection = Selection.Parent.Parent
  Else
    MsgBox ("Select a chart!")
  End If

End Function

所以每个宏中的前几行是

Dim cht As Chart
Set cht = chart_from_selection()

无论您是否选择了图表区域、绘图区域或其系列之一,宏都会识别图表。

如果您选择了图表轴之一,我也希望它能够工作,但问题是轴对象的父级是工作表而不是图表。有谁知道如何从其轴之一导出图表对象本身?我能想到的唯一方法是记录轴的位置,然后将其与工作表中所有图表的位置进行比较,直到找到并重叠,但这似乎很复杂,我想知道我是否忽略了一个更简单的方法...


好的,所以我想我可以为你提供一个解决方案:

Sub Find_Chart()

Dim C As ChartObject
Dim sAx As Axis
Dim Axs As Object

'Check if selection is axis
If TypeOf Selection Is Axis Then
    Set sAx = Selection
End If

'Loop through charts
For Each C In ActiveSheet.ChartObjects
    'Loop through axes
    For Each Axs In C.Chart.Axes
        If Axs.AxisTitle.Caption = sAx.AxisTitle.Caption Then
            Debug.Print C.Name
        End If
    Next Axs
Next C

End Sub

为了使上述代码正常工作,您的图表轴必须都有标题...如果您的图表没有标题(并且您希望保持这种方式),您可以添加标题并将字体更改为白色以保持你的图表看起来很干净。每个标题也必须是唯一的。设计一个 ID 系统以确保所有标题都是唯一的(例如 Chart1AxV、Chart1AxH、Chart2AxV 等)。如果您有预先存在的标题并且其中一些标题重复,您可以在标题末尾添加唯一 ID,并将标签的 ID 部分格式设置为白色。

上面的代码循环遍历工作表中的每个图表并检查图表中的每个轴。如果轴标题与所选轴的标题相同,则图表的名称将打印到立即窗口。

希望这对您有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法从 Excel VBA 中的轴导出图表? 的相关文章

  • 使用 SAS 导出到 Excel

    假设我有 2 个 SAS 数据集 test1 sas 和 Test2 sas 现在我想将这2个数据集导出到Excel中 其中Excel文件Sheet1中将有test1 sas数据 Sheet2中将有test2 sas数据 怎么做 从 开始这
  • VBA 窗体最多可以容纳多少个控件?

    我目前正在构建一个 Excel 2003 应用程序 该应用程序需要非常复杂的表单 并且担心控件数量的限制 目前它有 154 个控件 使用Me Controls Count 这应该是准确的 对吧 但可能只完成了大约三分之一 工作流程确实适合单
  • 数据透视和运行时错误 1004:应用程序定义或对象定义的错误

    我对宏和 VBA 编码很陌生 我正在尝试创建一个非常简单的宏 它从包含 33 列的表中获取数据并将其转换为数据透视表 只有最后 3 列 31 32 33 包含数字 我需要将其显示在枢轴上 因为我想比较当前月份 上个月以及逐月的变动 到目前为
  • 在 C# 中更改 Excel 单元格格式

    如何使用 C 中的 Microsoft Excel 12 0 库更改 Excel 中单元格的格式 更具体地说 我想将给定单元格更改为文本格式 我读过了 net c 改变Excel单元格格式 https stackoverflow com q
  • 通过vba在每个空间范围之间添加求和公式

    我试图进行自动化 但我被困在这里 我需要在空间范围之间动态添加总和公式 我完全迷失了使用 VBA 添加公式的能力 任何人都可以帮助我 先感谢您 我假设您想要的是 如果单元格中有空白 您希望将所有其他元素相加并将结果放置在该空白中 可能有很多
  • 如何填充上次保存的用户和文件的上次保存日期

    我有下面的代码从文件夹中获取文件名 Sub GetFileNames Assessed As T2 Dim sPath As String sFile As String Dim iRow As Long iCol As Long Dim
  • Word VBA“项目不可见”

    有谁知道如何使模板在 Word 2007 中可见 我创建了一个模板 Experiments dotm 使用加载项添加它 但是当我尝试在其中创建模块时 收到错误消息 项目无法查看 关于 项目无法查看 问题的解释可以参见here http ms
  • VBA Office2010 Shapes.PasteSpecial 失败

    我在将 VBA 代码从 Office2003 迁移到 Office2010 时遇到问题 我想将单元格 Excel 的文本复制到Powerpoint Office2003生成了一个新的文本框 文本样式与Excel中相同 现在我的代码在 Off
  • Excel VBA 最终用户选择图表对象

    我想生成一些代码 允许最终用户从工作表中选择多个图表之一 之后我将根据该选择进行一系列操作 我正在寻找类似于 Application Inputbox Type 8 的东西 它允许对象选择而不是范围选择 我对不起眼的老VBA要求太多了吗 首
  • 有没有办法设置一个变量一次并在多个地方使用它而不给它模块级别的范围?

    我有一个循环将用户窗体控件添加到集合中 由于多个地方都需要该集合 因此我将其放入模块中并在需要时调用它 这意味着该集合仅在需要时才位于内存中 但这也意味着我每次想要使用它时都会运行一个循环 I could已给出集合模块级别范围并在第一次需要
  • 如何刷新幻灯片放映中的活动幻灯片?

    基于我的最后一个问题 https stackoverflow com questions 14503054 change the image of an image shape我得到了正确的代码来更改形状的图像 不幸的是 这不会更新活动演示
  • Excel 2013 COM API 在服务帐户下挂起 ExportAsFixedFormat

    我有一个 NET Windows 服务 它调用 Excel 2013 COM API 以在 PDF 上导出 Excel 文档 我已尝试使用在两个不同域帐户下运行的 Windows 服务来执行此代码 这两个帐户都是运行代码的计算机上的本地管理
  • VBA:访问 JSON

    我正在处理 VBA 投影 但不确定如何访问此 JSON 中的 id 应该将 players 设置为什么才能在循环中获取 id 我已经用更多代码更新了问题 JSON event games players id 182759 Code Pri
  • excel中的多轴折线图

    我正在寻找类似于下图中的多轴折线图 这是由 amcharts 制作的 JavaScript 图表 excel有没有可以绘制图表的选项 请注意 有 3 个 Y 轴和 3 个折线图 可让您比较数据 是否有可能获得超过 3 个数据点 每个数据点在
  • 如何将包含 5000 条记录的 Excel 文件插入到 documentDB 中?

    我有一个 Excel 文件 最初约有 200 行 我能够将 Excel 文件转换为数据表 并且所有内容都正确插入到 documentdb 中 Excel 文件现在有 5000 行 在插入 30 40 条记录后不会插入 其余所有行不会插入到
  • 在 VBA 循环中导出查询以根据字符串值选择数据

    我有一个名为 TEST 的表 下面的代码根据 Territory 列中的唯一值循环导出查询 该代码应该根据 Territory 列中的唯一值将数据导出到 Excel 文件 因此每个 Territory 值都有它自己的文件 我在设置 sql
  • 通过文本自动创建到另一个工作表的超链接

    我想知道如何基于各自工作表中两个单元格具有的相同文本值 通过脚本自动创建从一个 Excel 工作表到另一个 Excel 工作表的超链接 如果这可以在没有脚本的情况下完成 使用某种公式 如 VLOOKUP 这将是更好的选择 谢谢你的时间 使用
  • 如何从 PowerQuery/Excel 数据模型中具有多对多关系的两个表中选取数据?

    这是我第一次在 stackoverflow 上提问 让我们看看进展如何 我正在尝试将不同规模资产的场景管理器连接到其所属的成本时间序列 以便我可以计算属于特定场景的资产配置的现金流 这就是我需要连接的两个表 简而言之 的样子 场景管理器 S
  • 更改索引设置访问 VBA

    我正在尝试自动化 Access 中的流程 我希望自动化的步骤之一是更改表中某些字段的索引设置 我需要这样做来提高后续查询的速度 使用索引查询速度大约快 100 倍 无论如何 假设我的表名为 Cars 如下所示 ID Name Charact
  • 如何用xlrd读取公式

    我正在尝试做一个解析器 它读取几个 Excel 文件 我通常需要位于行底部的值 您可以在其中找到所有上部元素的总和 因此 单元格值实际上是 sum 或 A5 0 5 可以说 对于使用 Excel 打开此文件的用户来说 它看起来像一个数字 这

随机推荐

  • 如何合并对象数组中的重复项并对特定属性求和? [复制]

    这个问题在这里已经有答案了 我有这个对象数组 var arr name John contributions 2 name Mary contributions 4 name John contributions 1 name Mary c
  • PyQt 中同一模型的不同视图

    我有一个关于 PyQt 中特定模型的多个视图的问题 目前 我有一个 TreeView 设置来显示继承自 StandardItemModel 的模型 模型中存在三种类型的 StandardItem Alpha Beta Gamma 它们在 T
  • 单元测试通过 Django 中模型的正则表达式验证器

    我为 models py 中的一些字段定义了模型以及正则表达式验证器 在tests py中 我编写了测试来验证这些验证器 但它们却通过了 尽管当我尝试通过视图输入错误的值时验证器会发出警报 并且我的 forms py 中没有该表单的任何 干
  • 如何查询iPhone当前的IP地址?

    如何查询iPhone当前的IP地址 如果你想要externalIP地址 用于从本地网络外部连接的IP地址 您需要查询外部网络上的服务器 快速搜索后得到以下结果 http checkip dyndns org http checkip dyn
  • Edmx 需要 Primary_Key 吗?

    在 net 中创建 Edmx 时 在创建数据库的 Edmx 时 仅添加具有主键的表和视图 这是一个问题 这个问题很容易解决 但只需在表或视图中创建列主键 但我不知道为什么有必要 谁能解释一下其背后的原因吗 实体框架需要一个主键来正确地将一条
  • 在 node-cron 中获取下一个 cron 作业时间

    在node cron中 如何获取下一个cron作业的时间 例如cronJob next CronJob time 或其他属性 文档中没有任何方法可以证明这一点 我不知道有什么方法可以使用节点 cron https www npmjs com
  • Windows Azure 共享访问签名始终给出:Forbidden 403

    我正在尝试获取单个 blob 的共享访问签名 然后使用 REST api 下载该 blob 但是 我总是收到禁止的 403 错误消息 都在存储模拟器和云上 这是我的代码 CloudStorageAccount storageAccount
  • File.Copy 之后文件正被另一个进程使用

    我正在尝试管理我的网络应用程序中的文件 有时 我必须在文件夹中创建一个文件 使用 File Copy File Copy oldPath newPath 几秒钟后该文件可能会被删除 if File Exists newPath File D
  • GUID 或 GUID 的 SHA1 哈希之间发生冲突的可能性是否更大?

    之间发生碰撞的机会是否更大GUID s 128 位 或 SHA1 哈希值GUID s 160 位 我的观点是 机会较小GUID 即使少了 32 位 因为它有一些特殊的机制来确保它 几乎 因为没有保证 唯一 例如 时间戳 注意 我已经知道GU
  • 点击屋。在集群上创建数据库超时结束

    我有一个由 Clickhouse 的两个节点组成的集群 两个实例都位于 docker 容器中 主机之间的所有通信均已成功检查 ping telnet wget 工作正常 在 Zookeeper 中 我可以在下面看到我触发的查询ddl bru
  • Android Studio 3.2.1,XML 错误缩进格式

    更新到 Android Studio 3 2 1 后 XML 文件格式非常烦人和糟糕 我们该如何修复它 我们可以将其从设置中的某处更改为预览类型吗 在 Android Studio 3 上 转到 首选项 gt 编辑器 gt 代码样式 gt
  • Eclipse 中源的相对路径

    所以 Eclipse 和相对路径 我想要实现的是与多个用户共享项目文件 其中每个用户的源的确切位置可能不同 即 项目 MyProject 的 src 可能位于c version control foo MyProject src or c
  • 操作栏 sherlock 库中显示空指针异常

    我想实现 Sherlock 操作栏的搜索视图小部件 我的问题是OnOptionItemSelected搜索视图项目的 我在库活动中遇到空指针异常 菜单 XML
  • WPF 复选框绑定

    虽然使用复选框的 Click 事件将复选框的选中状态存储在变量中很简单 但我如何通过数据绑定来做到这一点 我发现的所有示例都从某个数据源更新了 UI 或者将一个控件绑定到另一个控件 我想在单击复选框时更新成员变量 TIA 的任何指示 您必须
  • Secure Com SCP02 会话:响应初始化更新命令返回的“密钥多样化数据”的作用是什么

    在初始化更新命令的响应字段中 密钥多样化数据 包含制造商ID和安全域AID的最后两个字节 被返回到Off Card实体 我想知道这些数据的用途是什么 我在某处读到 该密钥多样化数据用于派生卡外的基本密钥 我不知道这是对还是错 如果是正确的
  • 如何将 libxml2 与 CMake 一起使用?

    我正在为我的 C 项目使用 CLion 编辑器 带有 CMake 不过我从未使用过外部库 我的问题是如何将外部库 例如 libxml2 链接到我的项目 我见过一些与此类似的问题 但没有一个对我有用 我的项目是在 Windows 上编译的 我
  • 使用predict()函数时出错

    我应该将输出转换为ar ols成为某种类型predict可以接受吗 y rnorm 100 0 1 z rnorm 100 0 1 yz cbind y z gt output ar ols yz aic F order max 2 dem
  • GIT 命名我的存储库

    我正在跟进本指南 http progit org book ch4 2 html它说要跑的地方 git clone bare stef project stef project git I get fatal repository stef
  • linux下用boost::thread创建boost::asio工作线程

    我在 Windows 下使用 boost 一段时间了 现在需要迁移几个现有的应用程序以在 Ubuntu 12 上运行进行演示 该应用程序创建两个工作线程 一个用于记录传入的 UDP 数据 另一个用于侦听单独的端口并将该数据打印到屏幕上 我已
  • 有没有办法从 Excel VBA 中的轴导出图表?

    我有许多用于操作 Excel 图表的通用 VBA 宏 例如 将一个图表叠加在另一个图表之上 重新缩放轴 或者通过键入公式向图表添加自定义曲线 例如 y x 2 1 在文本框中 这些宏是不带任何参数的子宏 我将它们存储在 xlam 加载项中