我在Excel 2010中有一个数据表,从第10行开始,每一行都在I列中包含一个计算的数字(X)。当(X)大于1时,代码旨在在表中的任何行下面插入(X)个新行。
当前的代码实现了这一点,但当表中有新的条目并且我再次运行代码时,在已经插入的额外行下面会添加更多的空白行。
我还想将列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)And.Value>1并且需要更多行(单元格(lngCounter,"A")),则