根据单元格值插入X行,并格式化新行

时间:2015-03-25 14:01:35

标签: vba excel-vba excel

我在Excel 2010中从第10行开始有一个数据表,每行包含第一列中的计算数字(X)。该代码用于在表格中的任何行下面插入(X)新行数(X)超过1.

当前代码实现了这一点,但随着新表项进入表中并再次运行代码,在已插入的其他行下方添加了更多空白行。

我还想将包含(X)的行中的A:G列中的信息复制到每个新插入的行中,并使原始行以粗体显示。

Sub Insert_SB()
Dim lngCounter As Long

For lngCounter = Range("I" & Rows.count).End(xlUp).row To 10 Step -1


    With Cells(lngCounter, "I")

    If IsNumeric(.Value) And .Value > 1 Then
    With .Offset(1, 0).Resize(.Value - 1, 1)
    .EntireRow.Insert
    End With
    If IsNumeric(.Value) And .Value = 0 Then Exit For

End If
End With

Next lngCounter

End Sub

1 个答案:

答案 0 :(得分:0)

例如,您的代码将在单元格I11中插入5个空白行,然后编号为5。再次运行代码时,它将再次找到数字5并插入另外5行....您需要告诉它它不需要。也就是说,您需要先计算数字5下面的空行,看看是否已经有5个,或者您需要将5标记为"完成" (也许可以写到K栏)

此功能可能会告诉您是否需要添加行:

Function NeedsMoreRows(rngToCheck As Range) As Boolean
Dim intNumBlankRows As Integer
Dim intCounter As Integer

    'this is the number of blank rows it should have underneath it
    intNumBlankRows = rngToCheck.Value

    For intCounter = 1 To intNumBlankRows

        If ActiveSheet.Cells(rngToCheck.Row + intCounter, rngToCheck.Column) <> vbNullString Then NeedsMoreRows = True


    Next intCounter



End Function

如果是IsNumeric(.Value)和.Value&gt; 1和NeedsMoreRows(细胞(lngCounter,&#34; A&#34;))然后