VBA代码在特定文本值下面插入行

时间:2017-04-26 19:43:12

标签: vba excel-vba excel

我需要在" Grand Total"的文本值下面插入一行。我需要代码循环遍历所有活动的工作表。它只需要查看A列。我是VBA的新手,因此代码越容易越好。

1 个答案:

答案 0 :(得分:0)

以下代码应该满足您的需求:

    Sub InsertLineAfterGrandTotal()
    Dim WS          As Integer
    Dim LastLine    As Long
    Dim LookingArea As Range
    Dim FoundCell   As Range
    For WS = 1 To Application.Sheets.Count
        Sheets(WS).Activate
        On Error Resume Next ' To avoid error when all cells are empty
        LastLine = Sheets(WS).Cells.Find("*", LookIn:=xlFormulas, _
            SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Row
        Set LookingArea = Sheets(WS).Range(Cells(1, 1), Cells(LastLine, 1))
        Set FoundCell = LookingArea.Find("Grand Total", LookIn:=xlFormulas, _
            LookAt:=xlWhole, SearchOrder:=xlByColumns)
        If FoundCell Is Nothing Then
            MsgBox "Grand Total not found in sheet " & Sheets(WS).Name & _
                ". Press Ok to continue", vbExclamation + vbOKOnly, "Not found"
        Else
            FoundCell.Offset(1, 0).EntireRow.Insert
        End If
    Next WS
End Sub

解释

1)For循环使其遍及工作簿中的所有工作表。

2)LastLine,如名称所示,获取活动工作表的最后一行。

3)LookingArea是搜索字符串Grand Total的范围。

4)FoundCell将指向找到Grand Total的单元格。如果找不到,则会出现一个消息框,如果在其上方插入了新行。