我在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
答案 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;))然后