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

Excel VBA用户窗体。将数据添加到标题下方的新行中,vba,excel,Vba,Excel,我试图在标题下面插入一个新行,以插入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

我试图在标题下面插入一个新行,以插入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
Private Sub knoppslaan_Click()
将ws设置为工作表
设置ws=工作表(“数据”)
“Regel invoigen op rij 4。
如果范围为“a4”,则
行(“4:4”)。选择
选择。插入移位:=xlDown
如果结束
“他是一个非常优秀的人。
ws.Cells(4,1).Value=VoorraadOpnameTA.Datumbox.Value
ws.Cells(4,2).Value=VoorraadOpnameTA.Tijdbox.Value
ws.Cells(4,3).Value=VoorraadOpnameTA.Opnemer.Value
端接头

选择中出现问题。插入移位:=xlDown此行。将行替换为所选内容。插入shift:=xlDown,CopyOrigin:=xlFormatFromLeftOrove

这是完整的代码

 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
Dim ws As工作表
设置ws=工作表(“数据”)
“Regel invoigen op rij 4。
如果范围为“a4”,则
行(“4:4”)。选择
选择。插入shift:=xlDown,CopyOrigin:=xlFormatFromLeftOrAbove
“他是一个非常优秀的人。
ws.Cells(4,1).Value=VoorraadOpnameTA.Datumbox.Value
ws.Cells(4,2).Value=VoorraadOpnameTA.Tijdbox.Value
ws.Cells(4,3).Value=VoorraadOpnameTA.Opnemer.Value
如果结束

将数据写入第4行时,您已硬编码了行号。所以它的值总是更新到第4行。如果您实际上正在考虑在第4行下面插入行并将数据写入第5行,请尝试下面的操作。代码将始终在第4行下方插入行,并将数据插入第5行

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
Private Sub knoppslaan_Click()
将ws设置为工作表
设置ws=工作表(“数据”)
“Regel invoigen op rij 4。
如果范围为“a4”,则
行(“4:4”)。选择
选择。插入移位:=xlDown
如果结束
“他是一个非常优秀的人。
ws.Cells(5,1).Value=VoorraadOpnameTA.Datumbox.Value
ws.Cells(5,2).Value=VoorraadOpnameTA.Tijdbox.Value
ws.Cells(5,3).Value=VoorraadOpnameTA.Opnemer.Value
端接头

最简单的方法是将数据格式化为工作表上的表格,这使其成为listobject,然后可以使用

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

这将在页眉下方插入一行,而不管表格实际在工作表上的什么位置。

您是否已仔细阅读代码以确保新行进入?你只是在检查a4“,这可能仍然是真的吗?B列的数据?a4中始终有数据。这是因为其中有一个日期,并且日期是自动设置的。但harun24hr的答案对我来说很有用。所以问题解决了:)