在excel中找到某个值,并使用Vbscript在其下面添加整行

时间:2010-10-05 18:32:46

标签: excel vbscript

我想做的是写一个VB宏,它将扫描整个列(F列)灼热的“年份总数:”,然后在它下面插入整行。

我有这个:

Sub Macro2() “ 'Macro2宏 “ '键盘快捷键:Ctrl + a

Dim C As Variant
Dim FirstRow As Integer

With Worksheets(1).Range("F1:F4000")
    Set C = .Find("Year Total:", LookIn:=xlValues)
    If Not C Is Nothing Then
        FirstRow = C.Row
        Do
            C.Offset(1, 0).Insert Shift:=xlDown
            Set C = .FindNext(C)
        Loop While Not C Is Nothing And C.Row <> FirstRow
    End If


End With

End Sub

但是,它只会添加单元格而不是整行。

我还要添加到代码中,以便在同一列中搜索“Grand Total:”并在其下添加三行。我只是要编写两个脚本,但如果我可以将它们全部混合在一起,那就太棒了。

1 个答案:

答案 0 :(得分:1)

好的,你走了,我只是测试了它,这就行了。我确信有更清洁的方法可以做到这一点,但听起来你正在寻找一个快速的解决方案,所以这对你有用。 :)

' Get last row
intLastRow = ActiveSheet.Range("F" & Rows.Count).End(xlUp).Row

' Loop till last row
intRow = 0
For Each strColFValue In ActiveSheet.Range("F1:F" & intLastRow).Value
    intRow = intRow + 1

    ' If found year, insert row below
    If InStr(UCase(strColFValue), "YEAR TOTAL:") > 0 Then
        Range("F" & intRow + 1).Select
        Selection.EntireRow.Insert
        intRow = intRow + 1
    End If

    ' If found grand total, insert 3 rows below
    If InStr(UCase(strColFValue), "GRAND TOTAL:") > 0 Then
        Range("F" & intRow + 1).Select
        Selection.EntireRow.Insert
        Selection.EntireRow.Insert
        Selection.EntireRow.Insert
        intRow = intRow + 3
    End If

Next