自动填充公式,但停止短

时间:2015-01-14 09:29:23

标签: excel vba excel-vba excel-formula autofill

我有一个宏,它在电子表格中插入了许多行,用户输入到对话框中的行数。我想要实现的是根据用户插入的行数将公式自动填充到相应的列中。

我目前的代码是:

Dim iInputRows As Integer
Dim iCount
iInputRows = CInt(InputBox("How many data entry rows required?")) 'message box for user input (interger)

If iInputRows > 1 Then
For iCount = 1 To iInputRows - 1
    Rows(iCount + 13 & ":" & iCount + 13).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 'insert no. of rows from from first row (row 13) to user input minus 1 (this ensures that the exact no. of rows are inserted from row 13 down)
    Range("D" & iCount + 13).Value = iCount + 1 'column D is used for sequential numbering purposes
Next iCount
End If

自动填充的公式为= X13:AR13

我对自动填充公式比较满意,但我在此应用程序中遇到困难,根据规定的行数停止自动填充。

2 个答案:

答案 0 :(得分:1)

您应该能够一次插入所有行,然后使用D列中的数据系列并填写X列中的公式:AR。

Dim iInputRows As Long

iInputRows = CInt(InputBox("How many data entry rows required?"))

If iInputRows > 1 Then
    Rows(14).Resize(iInputRows, Columns.Count).EntireRow.Insert _
      Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("D13").Resize(iInputRows + 1, 1).DataSeries Rowcol:=xlColumns, _
      Type:=xlLinear, Step:=1
    Range("X13:AR13").Resize(iInputRows + 1, 21).FillDown
End If

答案 1 :(得分:0)

我不确定你对剩下的数据做了什么,但这应该有效:

Sub aaa()
Dim iInputRows As Integer
Dim iCount
iInputRows = CInt(InputBox("How many data entry rows required?"))

If iInputRows > 1 Then
For iCount = 1 To iInputRows - 1
    Rows(iCount + 13 & ":" & iCount + 13).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("D" & iCount + 13).Value = iCount + 1

Next iCount
Range("X13:AR13").AutoFill Destination:=Range("AX13:AR" & iInputRows + 13)
End If
End Sub