【问题标题】:Run-time error '1004' Insert method of Range class failed while adding columnRange 类的运行时错误“1004”插入方法在添加列时失败
【发布时间】: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 - 感谢您的回复,实际上通配符很好,只需在打开文件后我需要按“启用编辑”加上它包含指向其他文档的链接。我猜是这样的。
  • 当我取消保护工作表时,这个问题已经解决了。

标签: excel vba


【解决方案1】:

您尚未引用要在其中插入列的工作表

Columns(colx).Insert Shift:=xlToRight

应该是

ws.Columns(colx).Insert Shift:=xlToRight

其中 ws 是工作表参考

【讨论】:

    猜你喜欢
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多