excel - 在这个 Excel VBA 中,有人能告诉我为什么它拒绝在工作表对象的 add 方法中使用 after 参数吗?
问题描述
代码是:
Sub Copy_Filtered_Table()
Dim aSheet As Worksheet
Dim i As Long
i = ActiveSheet.Index
ActiveSheet.AutoFilter.Range.Copy
-> Set aSheet = ActiveWorkbook.Worksheets.Add(After:=i)
aSheet.Range("A1").PasteSpecial
End Sub
工作簿格式是 .xlsm Excel 2016 它在活动工作表之后和之前都有工作表
我也试过用这样的 aSheet 变量来做
ActiveWorkbook.Worksheets.Add After:=i
它也没有用。这两种情况都会给出错误 1004 对象“表”的方法“添加”失败。如果我省略了 After 参数,它可以工作,但是将结果新工作表放在我正在避免的活动工作表之前。
解决方案
为了相对于现有工作表插入,您需要使用以下之一提供实际工作表而不是其索引:
Set aSheet = ActiveWorkbook.Sheets.Add(After:=ActiveWorkbook.Worksheets(i))
ActiveWorkbook.Sheets.Add After:=ActiveWorkbook.Worksheets(i)
您选择哪一个取决于您是否立即想对工作表做某事而不再次搜索,但我怀疑您已经知道了,考虑到您的问题。
顺便说一句(尽管我没有尝试过),我怀疑获取当前工作表的索引然后将其转回当前工作表对象有点不必要。您可能只想尝试:
Set aSheet = ActiveWorkbook.Sheets.Add(After:=ActiveWorkbook.ActiveSheet)
推荐阅读
- ckeditor - CKEditor - 将样式应用于整个
- c# - 如何摆脱这个问题(在从 VSCode 添加一个 nuget 包时,它说以退出代码终止:1。)?
- javascript - 如何将查询结果保存到全局变量?
- macos - 为什么 Automator AppleScript 不结束?
- dexie - 如何只修改 dexie 商店中的一个属性而不删除其余部分?
- android - 带有 Kotlin 的 Android,无法通过 id 找到元素
- iframe - 在框架中加载外部站点链接
- python - 为什么 model.fit 在单个时期内调用 __getitem__ (no_steps_in_epoch + 1) 次?
- nginx - Nginx $http_upgrade 始终为空
- flutter - Flutter ScrollController 无法正常工作