对象工作表的方法范围在插入列时失败
我一直在为客户做一个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