首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

缩放工作表后,Excel在VBA中返回错误的图表高度

在VBA中,当你缩放工作表后,Excel会返回错误的图表高度。这是因为Excel在缩放工作表时,并不会自动更新图表对象的高度属性。因此,当你尝试通过VBA代码获取图表的高度时,得到的值将会是错误的。

要解决这个问题,你可以通过以下方法来获取正确的图表高度:

  1. 使用ChartObject.Height属性:这个属性可以直接获取图表对象的当前高度,而不受工作表缩放的影响。可以使用以下代码来获取图表的高度:
代码语言:txt
复制
Dim chartObj As ChartObject
Dim chartHeight As Double

Set chartObj = Worksheets("Sheet1").ChartObjects("Chart1")
chartHeight = chartObj.Height
  1. 使用Shape.Height属性:图表对象实际上是一个形状(Shape),所以你也可以使用Shape.Height属性来获取正确的图表高度。可以使用以下代码来获取图表的高度:
代码语言:txt
复制
Dim chartShape As Shape
Dim chartHeight As Double

Set chartShape = Worksheets("Sheet1").Shapes("Chart1")
chartHeight = chartShape.Height

无论是使用ChartObject.Height还是Shape.Height属性,都能够获取到正确的图表高度,而不受工作表缩放的影响。

在应用场景方面,这个问题通常在需要自动调整或计算图表高度的VBA代码中会遇到。例如,你可能需要根据图表的高度来自动调整其他元素的位置或大小,或者将图表插入到其他应用程序中时需要准确的高度值。

推荐的腾讯云相关产品是腾讯文档,腾讯文档是一款在线协作文档工具,支持团队实时编辑、评论、版本管理等功能。腾讯文档可以用于编写文档、制作演示文稿、记录会议笔记等场景,也可以插入Excel表格和图表进行数据展示和分析。腾讯文档的产品介绍和链接地址如下:

产品名称:腾讯文档 产品介绍链接:https://docs.qq.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

VBA小技巧10:删除工作表中的错误值

这里将编写VBA代码,用来删除工作表指定区域中的错误值,这在很多情况下都很有用。 如下图1所示,有一组数据,但其中有一些错误值,我们想要自动删除这些错误值。 ?...图1 删除错误值的数据表如下图2所示。 ? 图2 如果不使用VBA,可以使用Excel的“定位”功能来实现。...如下图3所示,单击功能区“开始”的“编辑”组中的“查找和选择——定位条件”,弹出“定位条件”对话框。在该对话框中,选取“公式”中“错误”前的复选框,如下图3所示。 ?...图3 单击“确定”后,工作表中的错误数据单元格会被选择,单击“Delete”键,删除错误值,结果如上图2所示。...这段代码虽然相对长一些,但相比较前面的两种方法,可以自动在错误值单元格中输入内容。

3.4K30
  • Excel公式技巧94:在不同的工作表中查找数据

    很多时候,我们都需要从工作簿中的各工作表中提取数据信息。如果你在给工作表命名时遵循一定的规则,那么可以将VLOOKUP函数与INDIRECT函数结合使用,以从不同的工作表中提取数据。...假如有一张包含各种客户的销售数据表,并且每个月都会收到一张新的工作表。这里,给工作表选择命名规则时要保持一致。...也就是说,将工作表按一定规则统一命名。 在汇总表上,我们希望从每个月份工作表中查找给客户XYZ的销售额。...假设你在单元格区域B3:D3中输入有日期,包括2020年1月、2020年2月、2020年3月,在单元格A4中输入有客户名称。每个月销售表的结构是在列A中是客户名称,在列B中是销售额。...当你有多个统一结构的数据源工作表,并需要从中提取数据时,本文介绍的技巧尤其有用。 注:本文整理自vlookupweek.wordpress.com,供有兴趣的朋友参考。 undefined

    13.1K10

    Excel公式技巧14: 在主工作表中汇总多个工作表中满足条件的值

    在《Excel公式练习32:将包含空单元格的多行多列单元格区域转换成单独的列并去掉空单元格》中,我们讲述了一种方法,给定由多个列组成的单元格区域,从该区域返回由所有非空单元格组成的单个列。...“三维”是经常应用于Excel中特定公式的通用术语,这些公式不仅可以对单列或单行进行操作,也可以对由多列或多行组成的单元格区域进行操作,还可以有效地对多个工作表进行操作。...本文提供了一种方法,在给定一个或多个相同布局的工作表的情况下,可以创建另一个“主”工作表,该工作表仅由满足特定条件的所有工作表中的数据组成。并且,这里不使用VBA,仅使用公式。...k的值,即在工作表Sheet1中匹配第1、第2和第3小的行,在工作表Sheet2中匹配第1和第2小的行,在工作表Sheet3中匹配第1小的行。...在单元格A2中,COLUMNS($A:A)的值等于1,因此公式转换为: INDEX(Sheet1!A2:F10,1,1) 即工作表Sheet1中单元格A2的值。

    9.1K21

    VBA专题10-2:使用VBA操控Excel界面之设置工作表

    本文主要讲解操控工作表中一些界面元素的VBA代码。 名称框 名称框中的名字是为单元格区域定义的名字,可以由用户定义名称,或者由Excel自动创建,例如Print_Area和表1。...=False Next nm 但是,不能隐藏由Excel自动创建的表名称 即便隐藏了名称,你仍然能够通过在名称框中输入名称到达该名称的单元格区域。...高度 示例代码: '修改活动窗口中公式栏的高度 Application.FormulaBarHeight= 3 '默认高度是1 滚动条 隐藏和取消隐藏滚动条 示例代码: '隐藏和取消隐藏所有打开的工作簿中的滚动条...注意,代表颜色值的常量可以在VBA帮助系统中查找。...在当前窗口中滚动活动工作表不会导致在其他非活动窗口中的滚动。活动工作表可以是标准工作表、图表工作表、宏工作表或者对话框工作表。

    4.8K41

    Vba菜鸟教程

    在单元格输入公式 利用单元格公式返回值 调用工作表函数 利用vba函数 自定义函数 操作对象 类模块 excel应用对象 操作工作簿 操作工作表 操作单元格 图形对象 事件 关闭事件 工作簿事件...在Application.WorksheetFunction中,表,区域等使用vba中的写法 Sub test() '跳过出错 On Error Resume Next Range("A1"...") = VBA.String.InStr(Range("A22"), "E") '在VBA.Strings中,按符号分割字符串,返回数组 'Range("A1") = Split...Sheets(N),打开的第n个工作表,在左下角的位置 Sheet1 第一个插入的工作表,与位置无关,相当于本名 ActiveSheet 正在操作的工作表 Worksheets 不包括宏的工作表 方法...Sheet1.Select `选中表1 Sheets.Add after:=Sheet3, Count:=4 `在第三张表后插入四张表 `删除表格,需要先取消弹窗 Excel.Application.DisplayAlerts

    17.2K40

    对比VBA学习Python,让办公更自动化!

    VBA语言具有简单易学、功能强大的特点,在长达几十年的时间里为提高Excel工作效率作出了贡献,也积累了海量的代码和学习资料。在这段时间里,Basic语言也一直是国内中学到大学教学首选的计算机语言。...所以,Python用户在了解Excel对象模型的过程中需要参阅大量VBA的资料,即他们有快速掌握VBA语言的需求和获取xlwings基础性文档和使用手册的需求。...在xlwings API方式下,在sht对象后面引用api,后面就可以使用VBA中的引用方式,Range属性和Select方法首字母都是大写。...下面分别用VBA和Python获取工作表中数据区域末行的行号。其中,sht为指定的工作表对象。...下面分别用VBA和Python,使用Excel工作表中的数据创建嵌入式图表。

    3.8K11

    Excel宏教程 (宏的介绍与基本使用)

    需要注意的是:在使用过程中excel会自动重排工作表索引号,保持按照其在工作表标签中的从左至右排列,工作表的索引号递增。因此,由于可能进行的工作表添加或删除,工作表索引号不一定始终保持不变。...Charts代表指定工作簿或活动工作簿中所有图表工作表的集合,但不包括嵌入式在工作表或对话框编辑表中的图表。...图表工作表的索引号表示 图表工作表在工作簿的工作表标签栏上的位置。...$A$1:$A$6)” 5、避免循环引用 在上述公式赋值过程中,应避免在公式中引用被赋值的单元格,防止循环引用错误。...before:=Sheets(1) ‘在第1工作表前添加新工作表 Sheets.Add after:=Sheets(Sheets.Count) ‘在最后工作表后添加新工作表 2、移动 ActiveSheet.Move

    6.5K10

    Excel VBA解读(135): 影响工作表公式中运用自定义函数效率的Bug及解决方法

    学习Excel技术,关注微信公众号: excelperfect 在前面的两篇文章中,我们通过简单地修改VBA代码来使自定义函数运行得更快。...在VBE中存在一个小的Bug:Excel每次在工作表计算过程中运行包含自定义函数的公式时,包含自定义函数的公式都会将VBE标题栏改更为“正在运行”,如下图1所示。 ?...图2 此时,Excel会在VBE标题栏名称显示的工作簿名后显示[运行中],这就需要VBE向Windows屏幕处理程序发送消息,并刷新包含VBE的窗口。...如果Excel处于手动计算模式,可以捕获触发计算的所有键击,并在VBA代码中启动计算。...小结:如果需要在Excel中使用大量引用了VBA自定义函数的公式,则需要使用“手动计算”模式,并在工作簿中添加计算键捕获和处理程序。

    2.3K20

    学VBA还是学Python,这不是个问题!

    从上世纪90年代到目前,VBA一直是Excel脚本编程的主要工具。VBA语言具有简单易学、功能强大的特点,在长达几十年的时间里为提高Excel工作效率作出了贡献,也积累了海量的代码和学习资料。...所以,Python用户在了解Excel对象模型的过程中需要参阅大量VBA的资料,即他们有快速掌握VBA语言的需求和获取xlwings基础性文档和使用手册的需求。...在xlwings API方式下,在sht对象后面引用api,后面就可以使用VBA中的引用方式,Range属性和Select方法首字母都是大写。...下面分别用VBA和Python获取工作表中数据区域末行的行号。其中,sht为指定的工作表对象。...下面分别用VBA和Python,使用Excel工作表中的数据创建嵌入式图表。

    2.7K50

    学VBA还是学Python,这不是个问题!

    VBA语言具有简单易学、功能强大的特点,在长达几十年的时间里为提高Excel工作效率作出了贡献,也积累了海量的代码和学习资料。在这段时间里,Basic语言也一直是国内中学到大学教学首选的计算机语言。...所以,Python用户在了解Excel对象模型的过程中需要参阅大量VBA的资料,即他们有快速掌握VBA语言的需求和获取xlwings基础性文档和使用手册的需求。...在xlwings API方式下,在sht对象后面引用api,后面就可以使用VBA中的引用方式,Range属性和Select方法首字母都是大写。...下面分别用VBA和Python获取工作表中数据区域末行的行号。其中,sht为指定的工作表对象。...下面分别用VBA和Python,使用Excel工作表中的数据创建嵌入式图表。

    2.9K40

    代替VBA!用Python轻松实现Excel编程(文末赠书)

    VBA语言具有简单易学、功能强大的特点,在长达几十年的时间里为提高Excel工作效率作出了贡献,也积累了海量的代码和学习资料。在这段时间里,Basic语言也一直是国内中学到大学教学首选的计算机语言。...所以,Python用户在了解Excel对象模型的过程中需要参阅大量VBA的资料,即他们有快速掌握VBA语言的需求和获取xlwings基础性文档和使用手册的需求。...在xlwings API方式下,在sht对象后面引用api,后面就可以使用VBA中的引用方式,Range属性和Select方法首字母都是大写。...下面分别用VBA和Python获取工作表中数据区域末行的行号。其中,sht为指定的工作表对象。...下面分别用VBA和Python,使用Excel工作表中的数据创建嵌入式图表。

    5.9K30

    Excel编程周末速成班第3课:Excel对象模型

    这是因为Excel具有两类工作表,其中包含数据的行和列以及嵌入式图表的工作表和图表工作表(仅包含一个图表)。因此,Sheets集合包含Sheet对象,有两种类型:工作表和图表工作表。...提示:你的代码应该总是考虑可能的错误,尤其是在处理文件时。为了清楚起见,本课程中的示例代码通常会省略错误处理代码,但这并不意味着你可以这样做!...如果指定的工作簿不存在,则会发生错误。 最后,VBA提供了一些特殊的关键字,可用于引用工作簿: ActiveWorkbook,引用当前活动工作簿。...创建新工作表后,最好将其Name属性设置为Excel赋给的默认Sheet1和Sheet2名称以外的名称。...获取引用的另一种有用方法是使用Workbook对象的ActiveSheet属性。此属性返回对指定工作簿中位于顶部或处于活动状态的活动工作表(工作表或图表工作表)的引用。

    5.1K30

    VBA实战技巧24:调整图表数据标签的位置

    学习Excel技术,关注微信公众号: excelperfect 有时候,在Excel中绘制的图表会出现数据标签重叠的情形,不便于查看,如下图1所示。 ?...图1 此时,可以手工拖动数据标签来进行位置调整,也可以使用VBA代码来自动调整。 首先,了解一下图表坐标体系。如下图2所示,展示了将数据标签移到图表区域的右下角时的情形。...图表坐标的原点(0,0)在图表区域的左上角。 ?...那么,可以计算出数据标签的高度和宽度为: h = Ht – y w = Wd - x 这样,编写的VBA代码如下: Sub FindLblSize() Dim Lbl As DataLabel...Lbl.Left= OldLeft Lbl.Top =Cht.SeriesCollection(1).Points(2).DataLabel.Top - LblHt End Sub 在工作表中选择图表

    2.6K10

    Excel公式技巧16: 使用VLOOKUP函数在多个工作表中查找相匹配的值(1)

    在某个工作表单元格区域中查找值时,我们通常都会使用VLOOKUP函数。但是,如果在多个工作表中查找值并返回第一个相匹配的值时,可以使用VLOOKUP函数吗?本文将讲解这个技术。...最简单的解决方案是在每个相关的工作表中使用辅助列,即首先将相关的单元格值连接并放置在辅助列中。然而,有时候我们可能不能在工作表中使用辅助列,特别是要求在被查找的表左侧插入列时。...图3:工作表Sheet3 示例要求从这3个工作表中从左至右查找,返回Colour列中为“Red”对应的Amount列中的值,如下图4所示。 ?...B:B"}),$A3) INDIRECT函数指令Excel将这个文本字符串数组中的元素转换为单元格引用,然后传递给COUNTIF函数,同时单元格A3中的值作为其条件参数,这样上述公式转换成: {0,1,3...} 分别代表工作表Sheet1、Sheet2、Sheet3的列B中“Red”的数量。

    25.5K21

    Excel公式技巧17: 使用VLOOKUP函数在多个工作表中查找相匹配的值(2)

    我们给出了基于在多个工作表给定列中匹配单个条件来返回值的解决方案。本文使用与之相同的示例,但是将匹配多个条件,并提供两个解决方案:一个是使用辅助列,另一个不使用辅助列。 下面是3个示例工作表: ?...图3:工作表Sheet3 示例要求从这3个工作表中从左至右查找,返回Colour列中为“Red”且“Year”列为“2012”对应的Amount列中的值,如下图4所示的第7行和第11行。 ?...图4:主工作表Master 解决方案1:使用辅助列 可以适当修改上篇文章中给出的公式,使其可以处理这里的情形。首先在每个工作表数据区域的左侧插入一个辅助列,该列中的数据为连接要查找的两个列中数据。...16:使用VLOOKUP函数在多个工作表中查找相匹配的值(1)》。...注意,在定义名称时,将活动单元格放置在工作表Master的第11行。 名称:Arry1 引用位置:=MATCH(TRUE,COUNTIFS(INDIRECT("'"&Sheets&"'!

    14.1K10

    Excel VBA编程

    但是在VBA中,数据类型跟Excel不完全相同。...在VBA中,Excel的工作簿,工作表,单元格等都是对象,图表,透视表,图片等也都是对象,甚至于单元格的边框线,插入的批注都是对象… 集合也是对象,它是对多个相同类型对象的统称。...对象的常用属性 属性 返回的对象 ActiveCell 当前活动单元格 ActiveChart 当前活动工作簿中的活动图表 Activesheet 当前活动工作簿中的活动工作表 ActiveWindow...想让excel在删除指定的单元格后,按自己的意愿处理其他单元格,我们需要编写VBA代码将自己的意图告诉excel。...当在工程中添加一个窗体后,就可以在窗体上自由的添加ActiveX控件,只要通过编写VBA代码为这些控件指定功能,就能利用这些控件与excel互动 在工程中添加一个用户窗体 设置属性,改变窗体的外观

    45.7K33

    js 数组去除重复数据-当WPS开始像支持VBA一样支持JS语言时,微软又该何去何从?

    因此一直有朋友认为Script Lab是VBA的超级替代者之一。   2 丨   如何使用Script Lab   在Excel中,Script Lab需要在应用商店加载后才能使用。   ...();//选中工作表 return context.sync();//发送命令队列`})   以上代码运行后可以创建一张名称为"看见星光"的工作表,并在A1:B2区域输入以下数据:   如果扣除第1行和最后两行代码...比如以上代码,增加catch方法后,如果当前工作簿已存在名为"看见星光"的工作表,会返回相关错误信息;如果不增加,则不会显示错误信息。...但是——   在.sync()发送命令请求后,系统并不会按照排队顺序执行它,而是在执行完设置属性或调用方法的语句后,才执行load语句——这就乱套了不是?   ...Excel.run(async function(context)   在第5行使用await .sync();语句发送一次命令请求,系统执行命令队列,并返回代理对象,此时的对象就拥有了values属性

    2.6K10
    领券