对象工作表的方法范围在插入列时失败

我一直在为客户做一个macros。 需要根据单元格值插入列。

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

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 

看起来问题出在你的getColumn()函数中。

currentcolumn = 50 ,getColumn返回"A["因为iRemainder是27,所以你寻找Chr(91)[


采取从这个职位试试这个:

 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 

我使用这个子进行了一个基本的testing:

 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