在Excel 2007中选择要删除的行范围。运行时错误1004?
我试图编写一个代码,删除工作表中第三行和最后一行之间的所有行。我有一些简短的代码行,首先查找包含数据的最后一行,然后返回该行号。从中减去1。并选择从第3行到第2行到最后一行的数据范围,并尝试将其删除。但我每次运行这段代码都会出错。有什么建议吗在Excel 2007中选择要删除的行范围。运行时错误1004?,excel,range,delete-row,vba,Excel,Range,Delete Row,Vba,我试图编写一个代码,删除工作表中第三行和最后一行之间的所有行。我有一些简短的代码行,首先查找包含数据的最后一行,然后返回该行号。从中减去1。并选择从第3行到第2行到最后一行的数据范围,并尝试将其删除。但我每次运行这段代码都会出错。有什么建议吗 Sheets("Sheet1").Activate lastrow = (Sheet1.Range("A1").Offset(Sheet1.Rows.Count - 1, 0).End(xlUp).Row) - 1 Range("3: lastrow").
Sheets("Sheet1").Activate
lastrow = (Sheet1.Range("A1").Offset(Sheet1.Rows.Count - 1, 0).End(xlUp).Row) - 1
Range("3: lastrow").Select 'Error 1004: method range of object _global failed
Selection.Delete Shift:=xlUp
使用范围的SpecialCells属性:
Range("A3:" & Range("A1").SpecialCells(xlCellTypeLastCell).Address).Select
这将选择块直到最后使用的单元
编辑:
要将其合并到程序中以获得倒数第二个单元格,请对最后一个单元格执行一些字符串操作
Dim str, str1, str2, add As String
Dim index, num As Integer
str = Range("A1").SpecialCells(xlCellTypeLastCell).Address 'returns say $j$20
index = InStr(2, str, "$") 'find the second dollar sign
str1 = Left(str, index) 'gets the string "$j$"
str2 = Mid(str, index + 1) 'get the string "20"
num = CInt(str2) 'convert "20" to 20
num = num - 1
add = str1 & CStr(num) 'reattach to form "$j$19"
Range("A3:" & add).Select
谢谢我需要位于最后一行正上方的行,如何指定它。对不起,我是新来的vba@jerry我在里面放了一些评论,因为你是新手,可能还有很多其他的方法,非常感谢你,我意识到每次你改变你的数据表,改变最后一行的位置时,你都必须保存。如果你想让代码知道哪一行是最后一行或倒数第二行。只是出于好奇,你为什么认为我的代码没有编译或工作?@jerry如果你使用xlUp方向,你必须从RangeA65536.EndxlUp开始,你想要的是.Row而不是.Rows。我忘记了后者给你的是什么,但这是不正确的,在MSDN上仔细检查。这将只提供一列,因此如果列不均匀,将导致问题。SpecialCells是这个范围的一个很好的特性,它有一个不同的参数,例如,你可以得到所有使用过的单元格。