我根据输入字符串编写了一个宏来复制和插入不同位置的行或列。复制和插入位置由电子表格中的命名范围定义。
如果我想在同一部分添加多个列,一切都很有效。如果我在一个部分中添加一个列,然后想要在另一个部分中添加一个列,我会收到两个错误之一: Range类的复制方法失败 OR Range类的插入方法失败
我还没有弄清楚为什么复制方法有时会抛出错误,有时候却没有。任何帮助将不胜感激。
代码:
Sheets("TL Master").Range("Insert" & strAddType).Copy
'Offset for row/column
If strRowColumn = "row" Then
'Row = add value above
Range("Insert" & strAddType).Insert Shift:=xlDown
Range("Add" & strAddType & "ButtonCell").Offset(-4, 0).Value = strNewName
Else
'Column = add value left
Sheets("TL Master").Range("Insert" & strAddType).Insert Shift:=xlToRight
Range("Add" & strAddType & "ButtonCell").Offset(0, -4).Value = strNewName
If strAddType = "Machine" Then Range("Add" & strAddType & "ButtonCell").Offset(0, -4).Interior.Color = clrComplexityColor
End If
答案 0 :(得分:2)
您的代码缺少工作表名称。例如 -
Sheets("TL Master").Range("Insert" & strAddType).Copy
'Offset for row/column
If strRowColumn = "row" Then
'Row = add value above
Sheets("TL Master").Range("Insert" & strAddType).Insert Shift:=xlDown
Sheets("TL Master").Range("Add" & strAddType & "ButtonCell").Offset(-4, 0).Value = strNewName
Else
'Column = add value left
Sheets("TL Master").Range("Insert" & strAddType).Insert Shift:=xlToRight
Sheets("TL Master").Range("Add" & strAddType & "ButtonCell").Offset(0, -4).Value = strNewName
If strAddType = "Machine" Then Range("Add" & strAddType & "ButtonCell").Offset(0, -4).Interior.Color = clrComplexityColor
End If
我要注意的另一件事是,如果你的Offset强制将数据粘贴到工作表之外,这将导致错误。例如,如果您的命名范围是A1:A10而您执行和偏移(0,-1),那么这将不在工作表中并导致错误。
希望这有帮助。