根据单元格值更改 Excel 中的弧长

2023-12-12

我想根据单元格值动态更改 Excel 中的弧长。 例如,如果单元格值 = 100%,则拱形应成为完整的圆形。如果该值 = 0,它应该消失。 我发现下面的代码可以更改形状的大小,但我不知道如何修改它来更改长度。

Example: Example Pic

非常感谢您的帮助。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xAddress As String
    On Error Resume Next
    If Target.CountLarge = 1 Then
        xAddress = Target.Address(0, 0)
        If xAddress = "CT15" Then
            Call SizeCircle("Block Arc 63", Val(Target.Value))
        End If
    End If
End Sub

Sub SizeCircle(Name As String, Diameter)
    Dim xCenterX As Single
    Dim xCenterY As Single
    Dim xCircle As Shape
    Dim xDiameter As Single
    On Error GoTo ExitSub
    xDiameter = Diameter
    If xDiameter > 10 Then xDiameter = 10
    If xDiameter < 1 Then xDiameter = 1
    Set xCircle = ActiveSheet.Shapes(Name)
    With xCircle
        xCenterX = .Left + (.Width / 2)
        xCenterY = .Top + (.Height / 2)
        .Width = Application.CentimetersToPoints(xDiameter)
        .Height = Application.CentimetersToPoints(xDiameter)
        .Left = xCenterX - (.Width / 2)
        .Top = xCenterY - (.Height / 2)
    End With
ExitSub:
End Sub

您可以使用Shapes.Adjustments属性来调整块弧的“长度”。

程序AdjustArc将指定的形状设置为指定的“% 完全的".

程序Demo将为您的形状进展“注入动画”。确保在运行演示之前根据需要更改工作表名称和形状名称。程序Pause只是化妆品Demo.

Sub AdjustArc(arcShape As Shape, percent As Single)
'adjust the circumference of the arc or hides if 0%.
'Supply the percent as a fraction between 0 and 1. (50% = 0.5)

    With arcShape
        If percent <= 0 Then 'hide shape
            .Visible = False
            Exit Sub
        End If

        If percent > 1 Then percent = 1 'over 100%, make it 100%
        .Visible = True

        '0 = Full Circle, 359.9 = sliver, 360 = Full Circle
        .Adjustments.Item(1) = (1 - percent) * 359.9
    End With

End Sub

Sub demo() 'Run this one for demonstration
    Dim ws As Worksheet, sh As Shape, x As Single
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Set sh = ws.Shapes("Block Arc 1")
    For x = 0 To 1 Step 0.005
        AdjustArc sh, x
        Pause 0.01
    Next x
End Sub

Sub Pause(seconds As Single) 'just for the demo
'pause for specified number of seconds
    Dim startTime As Single: startTime = Timer
    Do: DoEvents: Loop Until Timer >= startTime + seconds
End Sub

简洁版本:

改变形状的线是:

ActiveSheet.Shapes("YourShapeName").Adjustments.Item(1) = x

...在哪里x是一个值> 0 and < 360.


Edit:适应您的代码

目前您的示例代码调用SizeCircle当工作表的单元格 CT15 发生变化时。

您可以替换这一行:

Call SizeCircle("Block Arc 63", Val(Target.Value))

...用这个:

AdjustArc ThisWorkbook.Sheets("Sheet1").Shapes("Block Arc 63"),Val(Target.Value) 

只需更换Sheet1以及具有该形状的工作表的名称。

这是假设百分比是stored作为实际百分比(0 到 1)CT15...它的格式如何并不重要。

你的代码和我的SizeCircle程序应在工作表模块(因为它有一个 on_change 事件)您可以通过右键单击工作表的选项卡并单击View Code.


更多信息:

  • MSDN : 调整对象 (Excel)
  • 堆栈溢出 :关于形状的很多内容(我的答案)
  • 代码VBA:如何使用Excel类Shape
  • MSDN : 形状对象 (Excel)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据单元格值更改 Excel 中的弧长 的相关文章

  • 导出到 Excel 时如何避免“数字存储为文本”

    当我将表格从 Access 导出到 Excel 时 所有数字都显示为文本 并且单元格上有绿色箭头 有没有办法自动修复此错误 或者有另一种导出方法可以解决该错误 作为参考 这是我导出的方式 DoCmd TransferSpreadsheet
  • VBA 激活 Internet Explorer 窗口

    我正在制作一个宏 用于打开 Internet Explorer 导航并登录网站 一切正常 但我需要将 IE 窗口放在前面并激活它 这样我就可以使用SendKeys在上面 我发现网站和视频在名为的命令上有不同的方法AppActivate我已经
  • 将最后几个功能添加到我的调度模板生成器中

    感谢 StackOverflow 上的一些出色的人 我几乎完成了调度模板生成器的代码 我还想补充三件事 但我遇到了一些麻烦 当前细分 我有两张表 2 员工列表 和 X 模板 员工列表中的值是从单元格 D9 开始的一列员工姓名 然后将员工值转
  • 文本到行 VBA Excel

    我有一个电子表格 其中包含大约 4000 行数据 其中一列数据具有唯一的订单号 我希望使用 作为分隔符将其分隔 所以本质上我想要 Name Order Date Jane 123 001 111 08 15 2013 Gary 333 12
  • 运行代码(而不是查询)时如何在状态栏上显示进度

    我已经发布了有关在 MS Access 2010 中运行查询时更新状态栏的问题 请参阅在 MS Access 中运行一系列查询时如何在状态栏上显示进度 https stackoverflow com questions 27765376 h
  • Perforce Excel 文件差异

    我有一堆 excel 文件放在 perforce 上 我想对这些 excel 文件进行 diff 类似于我在 perforce 中对其他文件 如 java cs 等 所做的操作 我尝试寻找一个插件 发现 P4OFC 只适合对 word 文件
  • 将范围内的每个值乘以常数,但跳过空白单元格

    我需要一个简单快速的解决方案 用于将范围内的所有值乘以 VBA 代码中的数值 我知道这个解决方案 将整个范围乘以值 https stackoverflow com questions 18990541 multiply entire ran
  • 使用 VBA 的下拉菜单

    我需要使用 VBA 从下拉菜单中选择特定选项 我怎样才能做到这一点 链接到我们试图从中提取的网页 IE document getElementsByName down count click 我尝试过的代码 Full Module Priv
  • xlwings: 删除一个列 | Excel 中的行

    如何删除 Excel 中的一行 wb xw Book Shipment xlsx wb sheets Page1 1 range 1 1 clear clear 用于删除内容 我想删除该行 我很惊讶 clear 函数有效 但 delete
  • 当时间为 00:00 时,Pandas 读取 excel 返回类型对象

    在更新版本的 Pandas 中 我使用的是 1 2 3 当从 Excel 文件读取时间时 时间为 00 00 00 时会出现问题 下面的脚本 其中 filepath 是我的 Excel 文件的路径 其中包含一个标题名为 Time 的列 im
  • Excel 工作簿 - 从 C# 读取速度非常慢?

    正在尝试读取 Excel 工作簿 发现读取 3560 行 7 列的工作表需要很长时间 大约需要 1 分 17 秒 我所做的就是循环遍历整个工作表并将值存储在列表中 这是正常现象 还是我做错了什么 static void Main strin
  • 如何让VLOOKUP在VBA中选择到最低行?

    希望自动在单元格中插入 VLOOKUP 公式 录制宏时 我指示它使用相同的公式填充下面的列 效果很好 但是 当 VLOOKUP 搜索的表发生变化 更多或更少的行 时 就会出现问题 在记录时 VLOOKUP 下降到表中的最后一行 273 但是
  • 如何找到特定程序的安装目录?

    我已经成功地编写了一些用于工作的 VBA 宏 这些宏基本上创建了一个数据文件 将其提供给一个程序并对该程序的输出进行后处理 我的问题是程序安装路径是硬编码在宏中的 并且安装在我同事的计算机上可能会有所不同 我首先想到的是 我可以从每个人那里
  • 使用 ObjPtr(Me) 返回自定义类实例的名称?

    我明白那个ObjPtr http support microsoft com kb 199824将返回内存中对象的地址 并且它指向一个名为 IUNKNOWN 的结构 并且其中编码了某种接口定义以公开对象结构 但我不知道如何确定一个对象的接口
  • VBA 完成 Internet 表单

    我正在寻找将 Excel 中的值放入网页的代码 Sub FillInternetForm Dim IE As Object Set IE CreateObject InternetExplorer Application IE naviga
  • 将包含宏的工作簿复制到不带宏的工作簿

    我能够复制工作簿 复制到所需位置 其中在后台包含宏 该副本还包含相同的宏 我的问题是我不希望这个重复的工作簿包含宏 谁能告诉怎么做吗 先感谢您 将您的工作簿保存为无宏 即简单地保存为 Excel 工作簿 对于我的 Excel 2007 这是
  • 我可以获取VBA代码中的注释文本吗

    可以说我有以下内容 Public Sub Information TEST End Sub 有没有办法得到 TEST 结果 不知何故通过VBA 例如 在 PHP 中 有一个获取注释的好方法 这里有什么想法吗 编辑 应该有办法 因为像 MZ
  • VBA 中的匈牙利语好吗?

    我在 Net 中不使用匈牙利语 str int 前缀 但我仍然发现它在 VBA 中很有用 因为在 VBA 中很难看到类型 这很糟糕吗 不必要 也许我错过了一些东西 我真的很感激任何反馈 我想知道有一段时间了 谢谢大家 我想说 这种匈牙利符号
  • 我如何以更好的方式编码而不是像这样的VBA编码

    我正在 Excel 中创建一个仪表板 但是我想知道是否有比这更好的编码方式 我想对其进行模块化 而不是这样做以使其更加整洁 Private Sub Afford If af Value True Then af afr Value Shee
  • 检查未绑定控件是否具有值的正确方法

    简单场景 一个表单和一个文本框 未绑定 Text1 If lt gt Text1 Then MsgBox Not Empty End If 上面的代码有效 表达方式 lt gt Text1如果文本框包含字符 则计算结果为 True 无论文本

随机推荐

  • 为什么我不能使用列表迭代器逻辑比较运算符?

    这是非常基本的 但我在这里找不到类似的问题 我正在尝试使用 list 从不同方向迭代相同的排序 STL 列表 我知道我可以将迭代器与list begin and list end 那么为什么这不起作用呢 list
  • 将项目垂直排列在行/列中,而不是水平排列

    我正在创建一个 html 页面 并希望切换到页面的滚动和浮动 所以在 body 或 div 中我想要一个项目列表 每个项目都应该位于前一个项目的下方 除非触及 div 的末尾 然后它应该位于较高的部分 依此类推 因此 如果要显示的内容太多
  • 在 PHP 会话中存储对象

    PHP 文档说 您不能在会话变量中使用引用 因为没有可行的方法来恢复对另一个变量的引用 这是否意味着我不能拥有类似的东西 session start user new User user gt name blah SESSION user
  • 透明 Bootstrap 导航栏

    我正在开发一个网站 我希望导航 仅主页 是透明的并且图像覆盖全屏 这是我到目前为止所拥有的 导航栏采用这种方式设计 因为其他页面上也是如此 这是我的 HTML div class container fluid div
  • 按方案中对的第二个元素对对列表进行排序

    我在方案中有一个程序 它给我一个对的列表 我需要按对的第二个元素对该列表进行降序排序 像这样 1 1 2 3 3 2 gt 2 3 3 2 1 1 1 1 x 3 2 1 3 1 gt x 3 1 1 2 1 3 1 1 3 3 4 2 2
  • Pyspark - df.cache().count() 需要永远运行

    我正在尝试使用我在网上阅读的计数方法强制对 PySpark 进行热切评估 spark df spark read jdbc url jdbcUrl table pushdown query properties connectionProp
  • 高效批量更新rails数据库

    我正在尝试构建一个 rake 实用程序 它会经常更新我的数据库 这是我到目前为止的代码 namespace utils do utils update ip Downloads the file frim
  • .Net“任何框架”配置

    我用 C NET 2 0 构建了一个程序 该程序在框架 3 0 和 3 5 下也能很好地工作 但如果 NET Framework 4 0是唯一安装的框架 则它不起作用 需要用户安装2 0 我在google中找到了以下配置
  • 堆栈与堆属性的 QT 特定差异?

    通常 在编写 C 代码时 我会始终将对象保留为普通属性 从而利用 RAII 然而 在 QT 中 删除对象的责任可以由析构函数承担QObject 因此 假设我们定义了一些特定的小部件 那么我们有两种可能性 1 使用QT的系统 class Wi
  • 不允许从一个 Google 电子表格访问另一个 Google 电子表格

    我试图通过其他电子表格中的 onEdit 事件为我的 Google 电子表格设置新值 我收到异常 不允许执行操作 我不明白我到底做错了什么 我会很高兴得到你的帮助 因为我只是在 JS Google Docs 脚本中做第一步 function
  • 将函数与 numpy 数组的每个元素积分作为积分极限

    我在 python 中有一个函数 也使用 scipy 和 numpy 定义为 import numpy as np from scipy import integrate LCDMf lambda x 1 0 np sqrt 0 3 1 x
  • 尝试使用 groupby 查找每月 5 个最大值

    我试图显示前三个值nc type每个月 我尝试使用n largest但这并没有按日期完成 原始数据 area nc type occurred date 0 Filling x 12 23 2015 0 00 1 Filling f 12
  • ddply+summary函数列名输入

    我正在尝试使用ddply and summarise一起从plyr包 但在解析不断变化的列名时遇到困难 在我的示例中 我想要一些能够以编程方式在 X1 中解析的东西 而不是在 X1 中硬编码到 ddply 函数中 举例说明 require
  • Android - 无法隐藏进度条

    因此 我检查了其他问题以隐藏进度条 但所有问题似乎都建议做我已经在做的事情 我正在尝试使用 mProductListProgressBar setVisibility View GONE 我找到它 mProductListProgressB
  • Makefile 更新了库依赖项

    我有一个很大的 makefile 它构建几个库 安装它们 然后继续构建链接到这些已安装库的对象 我的麻烦是我想使用 lfoo lbar 作为 g 标志来链接两个已安装的库 但依赖关系变得混乱 如果我更改库 foo 所依赖的标头 42 h 那
  • 查找 python 的安装位置(如果不是默认目录)

    Python 在我的机器上 我只是不知道在哪里 如果我在终端中输入 python 它将打开 Python 2 6 4 这不在它的默认目录中 肯定有一种方法可以从这里找到它的安装位置 sys有一些有用的东西 python Python 2 6
  • 如何在 3D 空间中围绕 x 轴旋转正方形

    所以我一直在尝试学习 3D 渲染是如何工作的 我尝试编写一个脚本 目标是在 3D 空间中旋转平面 2D 正方形 我首先在标准化空间 1 1 中定义一个正方形 请注意 只有 x 和 y 被标准化 class Vec3 3D VECTOR de
  • 为什么在尝试从列表中删除元素时会收到 UnsupportedOperationException?

    我有这个代码 public static String SelectRandomFromTemplate String template int count String split template split List
  • Python Selenium onclick 抛出 ElementNotInteractableException

    在我想使用 Selenium 进行交互的网站上 有以下 html 代码部分 a href img src img rename png 1 alt change name title change name a 这显示了一个小图像 单击该图
  • 根据单元格值更改 Excel 中的弧长

    我想根据单元格值动态更改 Excel 中的弧长 例如 如果单元格值 100 则拱形应成为完整的圆形 如果该值 0 它应该消失 我发现下面的代码可以更改形状的大小 但我不知道如何修改它来更改长度 Example 非常感谢您的帮助 Privat