如何使我的用户表单将数据插入下一行

时间:2017-04-26 20:26:04

标签: vba excel-vba excel

每次我在表单中输入新日期时,我的用户表单都会覆盖同一行。我希望将数据插入行中(" A6")等等。代码我用来在工作表中写日期。

Private Sub Commandok_Click()
Dim RowCount As Long

RowCount = Worksheets("Sheet3").Range("A1").Offset(5).CurrentRegion.Rows.Count
' Write data to worksheet
    With Worksheets("Sheet3").Range("A1")
     .Offset(RowCount, 0).Value = Me.task_done.Value
     .Offset(RowCount, 1).Value = Me.task_name.Value
     .Offset(RowCount, 2).Value = DateValue(Me.task_date.Value)
     .Offset(RowCount, 5).Value = Me.task_note.Value
     .Offset(RowCount, 6).Value = Me.task_additional.Value
End With

End Sub

Current screenshot

2 个答案:

答案 0 :(得分:2)

修改

只需使用它来获取最后一行:

RowCount =  Worksheets("Sheet3").Range("A" &  Worksheets("Sheet3").Rows.Count).End(xlUp).Row

答案 1 :(得分:0)

根据您的屏幕截图判断(而不是根据当前代码隐含的内容),我认为您想要:

Private Sub Commandok_Click()
    Dim NewRow As Long

    With Worksheets("Sheet3")
        NewRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
        ' Write data to worksheet
        .Cells(NewRow, "A").Value = Me.task_done.Value
        .Cells(NewRow, "B").Value = Me.task_name.Value
        .Cells(NewRow, "C").Value = DateValue(Me.task_date.Value)
        .Cells(NewRow, "F").Value = Me.task_note.Value
        .Cells(NewRow, "G").Value = Me.task_additional.Value
    End With
End Sub

使用CurrentRegion.Rows.Count找出要写的位置通常是一个坏主意,因为如果CurrentRegion没有从第1行开始,那会让您感到困惑,在您的特定情况下,CurrentRegion看起来在工作表中延伸了很长时间,因此您的RowCount可能是一个较大的数字。