在特定位置插入行

时间:2018-08-01 10:12:21

标签: excel excel-vba

我有这个子程序,可以在Excel工作表中插入新行。 每行在A列中都有一个日期,我想按顺序(从最旧到最新)插入该日期。因此,如果我要插入的日期大于最后一个日期,则只需在底部添加一个新行。 否则,我会寻找插入空白行并填充数据的位置。 我被卡在插入新行的部分:

cell.Rows(riga).EntireRow.insert

整个子是这样的:

Sub insert_row()
    lastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    data_last = Range("A" & lastRow).Value

    'prendo i valori
    data_mov = new_mov.data.Value
    descr_mov = new_mov.descr.Value
    importo_mov = new_mov.importo.Value

    'emetto un alert se la data inserita minore di quella della riga precedente (lastRow)
    If data_mov < data_last Then
        MsgBox "movimento nel passato"
        Dim rng As Range, cell As Range
        Set rng = Range("C5:C" & lastRow)
        For Each cell In rng
            riga = cell.Row
            data = Range("A" & riga).Value
            If data > data_mov Then
                riga = riga - 1
                cell.Rows(riga).EntireRow.insert
                Exit For
            End If
            Next cell

    Else
        'li inserisco nella prima riga vuota sotto
        nxt_row = lastRow + 1
        Range("A" & nxt_row).Value = data_mov
        Range("B" & nxt_row).Value = descr_mov
        Range("C" & nxt_row).Value = CDbl(importo_mov)
        Call Saldo_upd
    End If
    'evidenzio una cella di quella riga



    'ricalcolo il saldo

End Sub

我没有收到任何错误消息,什么都没有发生。有提示吗?

1 个答案:

答案 0 :(得分:1)

如果您有一个单元格引用,并且想在它是cell.EntireRow.Insert`之前插入一行,则类似于:

dim cell as range
set cell = Range("A2")
cell.EntireRow.Insert

...或者如果要在第3行之前插入

Rows(3).EntireRow.Insert

...或插入许多行:

Rows("3:8").EntireRow.Insert

更多信息: