我一直在为客户制作宏。需要根据单元格值插入列。
我为每个值使用相同的代码:
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
答案 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