插入列时,对象_worksheet的方法范围失败

时间:2014-03-16 15:39:59

标签: excel vba excel-vba runtime-error

我一直在为客户制作宏。需要根据单元格值插入列。

我为每个值使用相同的代码:

ws.range(getcolumn(currentColumn + 1) & ":" & getcolumn(currentcolumn +    3)).EntireColumn.Insert

在我点击第50列之前一切正常,然后我得到1004的运行时错误,该错误表示"对象工作表的方法范围失败"

为什么我收到此错误?

这是getColumn()函数:

Function getColumn(columnNumber As Integer) As String

Dim alphaNumber As Integer
Dim iRemainder As Integer
alphaNumber = Int(columnNumber / 27)
iRemainder = columnNumber - (alphaNumber * 26)

If alphaNumber > 0 Then
    getColumn = Chr(alphaNumber + 64)
End If

If iRemainder > 0 Then
    getColumn = getColumn & Chr(iRemainder + 64)
End If


End Function

1 个答案:

答案 0 :(得分:0)

问题出现在您的getColumn()功能中。

currentcolumn = 50 getColumn返回"A["因为iRemainder为27时,您正在寻找Chr(91) [


从此post获取此尝试:

Function getColumn(columnNumber As Integer) As String
  If columnNumber < 27 Then
     getColumn = Chr(64 + columnNumber)
  Else
     getColumn = getColumn((columnNumber - 1) \ 26) & getColumn((columnNumber - 1) Mod 26 + 1)
  End If
End Function

我使用这个子进行了基本测试:

Sub insertCol()
    Set ws = Sheets("Sheet1")

    For currentcolumn = 1 To 60
        ws.Range(getColumn(currentcolumn + 1) & ":" & getColumn(currentcolumn + 3)).EntireColumn.Insert
    Next currentcolumn
End Sub