首页 > 动态生成的excel的sheet里面怎么样删除空白行

动态生成的excel的sheet里面怎么样删除空白行

在一个Excel表格中有Sheet1.内容如下

然后需要生成一个新的sheet,拷贝sheet1的内容,并且删除空白行。代码如下

Private Sub CommandButton1_Click()
    Worksheets.Add(after:=Sheets(Sheets.Count)).Name = "test"
     
    Dim fromSheetName As String
    fromSheetName = "Sheet1"
    
    Worksheets(fromSheetName).Range("A1:A7").Copy Destination:=Worksheets("test").Range("A1:A7")
    Sheets("test").Select
    Dim LastRow As Long
    Dim r As Long
    LastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
    Application.ScreenUpdating = False
    For r = LastRow To 1 Step -1
        If Application.WorksheetFunction.CountA(Rows(r)) = 0 Then Rows(r).Delete
    Next r
    Application.ScreenUpdating = True
End Sub

在生成的sheet里面,可以看到拷贝的结果,但是没有删除空白行?请问为什么呢?


你说的空白行是sheet1中从第7行开始的行吗?
如果是的话,你就理解错excel了,sheet1中只有1-6行是真正的行,第七行开始都不是行,更加不算是空白行了,只不过excel的GUI界面显示了一个行号在这里。

如果把excel理解为一个web界面+数据库,它就是把输入界面(WEB表单)和数据展示做到同一个显示区域了,你的sheet1,第1-6行在数据库中有对应的内容,数据库里并没有第7行和之后的行,excel界面从第7行开始只是把输入界面(WEB表单)重复显示了数万次,以便于你快速录入产生新的数据刻录(这是excel相对access最大的优势,数据输入/修改界面极其高效)

如果你往A7单元格填入内容,那么第七行就诞生了,如果你不在第七行填内容,这个第7行是不存在的(如何验证?你把excel另存为csv,或者xml,再看看源代码就明白了,excel 2007支持104万行,如果真存在你所说的空行,那每个excel文件都该有多大呀)

既然不存在所谓的空行。你又怎么可能去删除他们呢,只可能通过一些设置让excel引擎不要显示输入模板(WEB表单)

【热门文章】
【热门文章】