簡體   English   中英

根據單元格值插入X行數並格式化新行

[英]Inserting X number of rows dependent on cell value and formatting the new rows

我在Excel 2010中有一個數據表,該數據表從第10行開始,每行在I列中都包含計算所得的數字(X)。該代碼用於在(X)時在表中的任何行下方插入(X)個新行大於1。

當前代碼可以實現這一點,但是當在表中添加新條目並再次運行該代碼時,將在已插入的其他行下方添加更多空白行。

我還想將A:G列中的信息從包含(X)的行復制到每個新插入的行,並使原始行以粗體顯示。

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

例如,您的代碼將在單元格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> 1並且NeedsMoreRows(Cells(lngCounter,“ A”))然后

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM