【发布时间】:2016-02-01 21:24:02
【问题描述】:
看起来很简单,但找不到解决方法。
Excel 2010。 目标:从B开始添加22个空列
错误: 运行时错误“1004”: Range 类的插入方法失败
代码:
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Sheets(1).Select
ActiveSheet.Tab.ColorIndex = xlColorIndexNone
Dim WbPresent As Workbook
Set WbPresent = ActiveWorkbook
Dim FileData As String
FileData = "160125"
Dim TabName As String
TabName = "IB Hire Plan - Hierarchy " & FileData
Workbooks.Open Filename:= _
"\\chca6030.eur.beluni.net\m137557$\Documents\Makro VBA\ATR\Taleo\*.xlsm"
Sheets("IB Hire Plan - Hierarchy").Select
Sheets(3).Activate
Sheets("IB Hire Plan - Hierarchy").Copy Before:=WbPresent.Sheets(1)
Sheets("IB Hire Plan - Hierarchy").Select
For colx = 2 To 23
Columns(colx).Insert Shift:=xlToRight
Next*
正在检查类似的问题,但没有找到合适的答案。
【问题讨论】:
-
①您是否要在一个块中插入 22 列?如果是这样,那么像
.Cells(1, 2).Resize(1, 22).EntireColumn.Insert这样的东西会更好。如果插入的列不是连续的,则向后循环;不转发。 ② 使用With ... End With 块来标识您正在引用的单元格的父工作表,对于您正在引用的工作表的父工作簿也是如此。 ③ 工作表上有多少数据?您是否有可能试图将数据从工作表的右侧推出? -
您打开的文件是否可以编辑?还是只读的?另外,我不确定 Workbooks.Open 的文件名参数是否接受通配符(请参阅link)。
-
@Jeeped - 有趣的是它可以工作但不能同时工作。您的代码行肯定很好,因为我向前迈出了一步,在屏幕上看到您的解决方案,但屏幕上仍然是同样的问题。我想这都是关于文件和工作表等之间的引用。
-
@D-T - 感谢您的回复,实际上通配符很好,只需在打开文件后我需要按“启用编辑”加上它包含指向其他文档的链接。我猜是这样的。
-
当我取消保护工作表时,这个问题已经解决了。