2016-05-13 56 views
0

是否有一种使用Excel VBA的方法,以便任何时候Excel电子表格中位于具有某些内容的行之间的特定行在其所有单元格中清空,较低的行向上复制。即假设第1-10行有内容,我删除第5行的内容,然后第6行变成第5行,第7行变成第6行等到第10行变成第9行并且操作完成。任何建议将不胜感激。自动删除行,并用Excel中的较低行替换Vba

回答

0

所以,你已经做了编辑,并尝试它为您的需要。您应该注意到底部的循环向上移动,Excel电子表格顶部有五条固定线。

Sub Delete_Empty_Lines() 
    Dim quotes As Integer 

    Application.ScreenUpdating = False 
    Dim usedRows As Long 
    Dim row As Long 

    '// usedRows = Sheets("Sheet-1").UsedRange.Rows.Count 
    usedRows = Sheets("Sheet-1").Cells(Rows.Count, 1).End(xlUp).row 

    For row = usedRows To 5 Step -1 
    If Sheets("Sheet-1").Cells(row, 1) = "" Then 
     quotes = MsgBox("Sheet-1 has empty lines - delete this line?", vbYesNo) 
     Select Case quotes 
     Case vbYes 
      Rows(row).EntireRow.Delete 
      '// Exit Sub 
     Case vbNo 
      Exit Sub 
     End Select 
    End If 
    Next 

    Application.ScreenUpdating = True 

End Sub 

编辑:代码示例插入线:

Private Sub cmdFillData_Click() 
    '//--- clean and fill in some data ---------------------------------- 
    Sheets("AreaData").Select 
    Worksheets("AreaData").Cells.Clear 
    Range("A1").Select 
    Range("A1:C1") = Array("Germany", "Berlin", "Brandenburg Gate") 
    Range("A2:C2") = Array("South Africa", "Cape Town", "Waterfront") 
    Range("A3:C3") = Array("France", "Paris", "Eiffel Tower") 
    Range("A4:C4") = Array("Spain", "Madrid", "Plaza Mayor") 
    Range("A5:C5") = Array("Italy", "Rome", "Palazzo Senatorio") 

    '//--- search for value ------------------------------------- 
    Columns("A:A").Select 
    Cells.Find(What:="France", After:=ActiveCell, LookIn:=xlFormulas, _ 
    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
    MatchCase:=False, SearchFormat:=False).Activate 

    '//--- Insert row above active cell 
    ActiveCell.EntireRow.Insert 
    ActiveCell.Select 

    '//--- Insert row below active cell 
    'ActiveCell.Offset(1).EntireRow.Insert 

    '//--- Insert column to the left of the active cell 
    'ActiveCell.EntireColumn.Insert 

    '//--- Insert column to the right of the active cell 
    'ActiveCell.EntireColumn.Offset(0, 1).Insert 

End Sub 
+0

@ help-info.de所以基本上行(行).EntireRow.Delete做这项工作?什么确保将较高索引行复制到较低索引行? – IntegrateThis

+0

这是旧东西,是行(行).EntireRow.Delete 完成这项工作。复印作业与手动完成相同。 –

+0

在两行之间添加行是否有类似的功能?非常感谢。 – IntegrateThis