- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现一个私有(private)子例程,以将工作表添加到事件工作簿(使用工作表以便可以选择添加 xlForms、xlWorksheet 等)。
但是我遇到了一个奇怪的问题,即相对于工作簿中的其他工作表创建新图表的位置。
我首先删除同名的工作表(如果存在),然后使用以下代码:
ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.count()), _
Type:=sheet_type).Name = sheet_name
哪里sheet_type
是枚举 XlSheetType
的可选参数,和sheet_name
是 string
.
它对于每个可用的参数都完全有效,例如 xlWorksheet
, xlDialogSheet
,甚至 xl4MacroSheet
-- 但由于某种原因会创建 xlChart
结束之前的 1 个位置,而不是使其成为工作簿中的最后一张工作表。
示例 I/O(一开始只有 3 张):
> 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 开始),因此假设它应该将其放置在第三个工作表之后,但事实并非如此。尝试做Sheets.count() + 1
用于测试仅给我一个数组下标超出范围运行时异常(这是预期的)。
我什至只测试了以下基本代码:
ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.count()), _
Type:=xlChart).Name = "Test"
我最终仍然得到相同的结果。
所以基本上我的问题是:我在这里做错了什么吗?是否有任何具体原因导致图表无法添加到工作簿的末尾?或者这可能是 VB 中需要修复的问题/错误?
我使用的是 Office 2007,那么这个错误是否已在较新版本中修复?
任何输入都会有所帮助。
编辑:值得注意的是After:=Sheets(Sheets.count())
生成与 After:=Sheets(Sheets.count() - 1)
相同的位置,但仅限于 Type:=xlChart
的情况
编辑2这更有趣。如果您创建一个图表,请将其作为工作簿中的最后一个工作表,并使用以下代码:
ActiveWorkbook.Charts.Add After:=Charts(1)
Excel 将自动重新调整图表方向,以便工作表位于最后。
例如,如果您有:
Sheet 1 | Sheet 2 | Sheet 3 | Chart 1
并使用代码,您将得到
Sheet 1 | Sheet 2 | Chart 1 | Chart 2 | Sheet 3
最佳答案
好吧,我不确定这是否会对您有帮助,但是是的,它在这里有同样奇怪的行为,并且找不到任何“干净”的方法来使纸张持久,所以我的解决方案是:
ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.Count()), _
Type:=xlChart).Name = sheet_name
Sheets(sheet_name).Move After:=Sheets(Sheets.Count())
关于vba - Excel 2007 VBA - 使用 Sheets.Add 在工作簿末尾创建图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21691690/
我是一名优秀的程序员,十分优秀!