首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel 2007 VBA -使用Sheets.Add在工作簿的末尾创建图表。

Excel 2007 VBA -使用Sheets.Add在工作簿的末尾创建图表。
EN

Stack Overflow用户
提问于 2014-02-11 02:07:44
回答 1查看 4K关注 0票数 9

我正在尝试实现一个私有子程序,以便将一个工作表添加到活动工作簿(使用工作表,以便可以选择添加xlForms、xlWorksheet等)。

但是我遇到了一个奇怪的问题,新的图表是相对于工作簿中的其他表格来创建的。

我首先删除同名的工作表(如果存在的话),然后使用以下代码:

代码语言:javascript
运行
复制
ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.count()), _
Type:=sheet_type).Name = sheet_name

其中sheet_type是枚举XlSheetType的可选参数,sheet_namestring

它对所有可用的参数(如xlWorksheetxlDialogSheet,甚至xl4MacroSheet )都能很好地工作--但由于某种原因,它将在结束前创建xlChart 1位置,而不是将其作为工作簿中的最后一个工作表。

因此,示例I/O (只从3张开始):

代码语言:javascript
运行
复制
> Create_Sheet "Test", sheet_type:=xlWorksheet
Sheet 1 | Sheet 2 | Sheet 3 | Test

> Create_Sheet "Test", sheet_type:=xlDialogSheet
Sheet 1 | Sheet 2 | Sheet 3 | Test

> Create_Sheet "Test", sheet_type:=xlChart
Sheet 1 | Sheet 2 | Test | Sheet 3 

在前面的示例中,Sheets.count()正确地返回3(因为我只从第1、2和3页开始),所以它应该假设在第3页之后定位它,但它没有。尝试为测试做Sheets.count() + 1只会给我一个数组下标超出范围运行时异常(这是预期的)。

我甚至测试了以下基本代码:

代码语言:javascript
运行
复制
ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.count()), _ 
Type:=xlChart).Name = "Test"

最后我还是得到了同样的结果。

所以基本上我的问题是:我是不是做错了什么?对于为什么不能将图表添加到工作簿的末尾,有什么具体的原因吗?或者这可能是VB中需要修复的问题/bug吗?

我正在使用Office 2007,所以它是否是在新版本中修复的错误?

任何输入都会有帮助。

编辑:值得注意的是,After:=Sheets(Sheets.count())生成的位置与After:=Sheets(Sheets.count() - 1)相同,但仅在Type:=xlChart的情况下

编辑2 --这甚至更有趣。如果创建一个图表,将其作为工作簿中的最后一个工作表放置,并使用以下代码:

代码语言:javascript
运行
复制
  ActiveWorkbook.Charts.Add After:=Charts(1)

Excel将自动调整图表的方向,使工作表成为最后一个。

例如,如果您有:

代码语言:javascript
运行
复制
Sheet 1 | Sheet 2 | Sheet 3 | Chart 1

使用代码,您将得到

代码语言:javascript
运行
复制
Sheet 1 | Sheet 2 | Chart 1 | Chart 2 | Sheet 3
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-24 13:02:15

好的,我不确定这是否对你有帮助,但是的,它在这里也有同样的奇怪行为,并且找不到任何“干净”的方法来使纸张最后一次,所以我的解决方案是:

代码语言:javascript
运行
复制
ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.Count()), _
Type:=xlChart).Name = sheet_name
Sheets(sheet_name).Move After:=Sheets(Sheets.Count())
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21691690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档