Excel VBA用户表单。将数据添加到标题下方的新行中

时间:2016-01-25 08:41:19

标签: excel vba excel-vba

我正在尝试在标题下插入一个新行,以插入Userform的数据。

我当前的代码在第4行添加了新数据,但它没有在第4行中添加新行。它会覆盖第4行中的数据。

Private Sub KnopOpslaan_Click()

        Dim ws As Worksheet
        Set ws = Worksheets("Data")

        'Regel invoegen op rij 4.
            If Range("a4") <> "" Then
            Rows("4:4").Select
            Selection.Insert shift:=xlDown
            End If

        'Formulier doorzetten naar het excel bestand.
            ws.Cells(4, 1).Value = VoorraadOpnameTA.Datumbox.Value
            ws.Cells(4, 2).Value = VoorraadOpnameTA.Tijdbox.Value
            ws.Cells(4, 3).Value = VoorraadOpnameTA.Opnemer.Value
End Sub

3 个答案:

答案 0 :(得分:0)

此行Selection.Insert shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove出现问题。用“ Dim ws As Worksheet Set ws = Worksheets("Data") 'Regel invoegen op rij 4. If Range("a4") <> "" Then Rows("4:4").Select Selection.Insert shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 'Formulier doorzetten naar het excel bestand. ws.Cells(4, 1).Value = VoorraadOpnameTA.Datumbox.Value ws.Cells(4, 2).Value = VoorraadOpnameTA.Tijdbox.Value ws.Cells(4, 3).Value = VoorraadOpnameTA.Opnemer.Value End If

替换该行

这是完整的代码。

result

答案 1 :(得分:0)

在将数据写入第4行时,您已对行编号进行了硬编码。因此,其更新值始终为Row4。如果您实际上是在Row4下面插入Row并将数据写入Row5,请尝试以下操作。代码将在Row4下面插入Row并始终将数据插入Row5

Private Sub KnopOpslaan_Click()

    Dim ws As Worksheet
    Set ws = Worksheets("Data")

    'Regel invoegen op rij 4.
        If Range("a4") <> "" Then
        Rows("4:4").Select
        Selection.Insert shift:=xlDown
        End If

    'Formulier doorzetten naar het excel bestand.
        ws.Cells(5, 1).Value = VoorraadOpnameTA.Datumbox.Value
        ws.Cells(5, 2).Value = VoorraadOpnameTA.Tijdbox.Value
        ws.Cells(5, 3).Value = VoorraadOpnameTA.Opnemer.Value
End Sub

答案 2 :(得分:0)

最简单的方法是将数据格式化为工作表上的表格,这使得它成为列表对象,然后可以使用

ws.ListObjects("name").ListRows.Add 1

这会在标题下方插入一行,无论表格实际位于表格的哪个位置。