Excel VB 宏的问题? (如何选择Selection.End(xlDown).Select下的空白行)

我要完成每天报告数据的累加代码如下:
Sub copy1()
Range("A6").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Workbooks.Open Filename:= _
"H:\Test.xlsx"
Application.Run "ConnectChartEvents"
Range("A6").Select
Selection.End(xlDown).Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
其中Selection.End(xlDown).Select只能选择最后一行的非空白行,这样每天累计的数据最后一行数据会被新数据覆盖,请问如何选择最后一行空白数据?
最新回答
涟漪幽香

2025-06-27 08:53:40

这是要选择当前列中的最后一个非空单元格对应的行号吧
直接用Selection.end(xldown).row就可以获得行号
如果是想选择它下面的空白航
就用rows(Selection.end(xldown).row+1).select就可以了

关于此处end(xldown)的相关知识:
end(xldown):从被选中的单元格向下寻找,如果被选中单元格为空,则一直向下走到第一个非空单元格;如果被选中单元格为非空,则向下走到最后一个非空单元格。
一抹晚夏

2025-06-27 03:17:48

我是用这找出最后一个非空行的:
Sub Macro1()
'找出最后一行的非空白行
Dim row_last As Integer
Selection.SpecialCells(xlCellTypeLastCell).Select
flag = False
Do While flag = False
If ActiveCell.Row = 1 Then
Exit Do
End If
Selection.End(xlToLeft).Select
temp1 = IsEmpty(ActiveCell.Value)
Selection.End(xlToRight).Select
temp2 = IsEmpty(ActiveCell.Value)
If temp1 = True And temp2 = True Then
Selection.Offset(-1, 0).Select
Else
flag = True
Exit Do
End If
Loop
Selection.End(xlToLeft).Select
row_last = ActiveCell.Row
End Sub
我比想象中爱你

2025-06-27 16:12:29

为什么不直接选择 而用……
改一下试试

cells(range("a6").end(xldown).row+1,1).select

这个应该不报错了吧?
你上面 代码其实我没有全部阅读,你能解释一下 你想做什么吗?
Selection.End(xlDown).Select 为什么要用这个哪?如果 你仅仅是要找 某一列的最后一行的话?

直接使用 range("a6").end(xldown).row 不就可以了吗?再加上1 就是 它下面的一行空白的行了……至于用这个还报错的话 就是 你的程序其他代码 有问题吧?
原来说的 cells(selection.end(xldown).row+1,1).seletc 改一下也是可以的 就是加一个中间变量

row1=selection.end(xldown).row+1
cells(row1,1).select 这样也可达到你的目的……
感觉你是想 找到 打开的工作表 A6 所在列 下面的第一个空单元格……直接用
cells(range("a6").end(xldown).row+1,1).select 去掉 range("a6").select
另外 从你的代码上来看 你在运行宏的表上 是选中了 一个从A6开始的到表中最后一个使用的单元格区域 这样的一个区域进行复制……
Application.Run "ConnectChartEvents" 又调用了另外一个 宏?
再有问题 你再追问!
悦心自足

2025-06-27 03:46:22

添个offset(1,),不行么?
追问
怎么填?
追答
Selection.End(xlDown).offset(1,).Select