Vba 将文本框中的值写入单行

Vba 将文本框中的值写入单行,vba,excel,Vba,Excel,我有一些文本框和一个按钮,单击该按钮时会将文本框中的值写入一行,下面是一个屏幕截图: 下面是代码: Function theLastRow() As Long Dim lastRow As Long lastRow = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row theLastRow = lastRow End Function Private Sub button1_Click() Sheet2.Cells(the

我有一些文本框和一个按钮,单击该按钮时会将文本框中的值写入一行,下面是一个屏幕截图:

下面是代码:

Function theLastRow() As Long
    Dim lastRow As Long

    lastRow = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row
    theLastRow = lastRow
End Function

Private Sub button1_Click()

    Sheet2.Cells(theLastRow + 1, 5).Value = Comment.Value

    'cant be left empty
    If (name1.Value <> "" And name2.Value <> "" And szsz.Value <> "" And Sum.Value <> "") Then
        Sheet2.Cells(theLastRow + 1, 1).Value = name1.Value
        Sheet2.Cells(theLastRow + 1, 2).Value = name2.Value
        Sheet2.Cells(theLastRow + 1, 3).Value = szsz.Value
        Sheet2.Cells(theLastRow + 1, 4).Value = Sum.Value

    End If 
End Sub
函数theLastRow()的长度
最后一排一样长
lastRow=Sheet2.单元格(Rows.Count,1).结束(xlUp).行
theLastRow=最后一行
端函数
专用子按钮1\u单击()
Sheet2.单元格(theLastRow+1,5).Value=Comment.Value
“不能让它空着
如果(name1.Value“”和name2.Value“”和szsz.Value“”和Sum.Value“”),则
Sheet2.单元格(theLastRow+1,1).Value=name1.Value
Sheet2.单元格(theLastRow+1,2).Value=name2.Value
表2.单元格(theLastRow+1,3).Value=szsz.Value
表2.单元格(theLastRow+1,4).Value=Sum.Value
如果结束
端接头
它几乎可以按预期的方式工作,但不完全是:


Name2
szsz
sum
总是从低一行开始,有什么问题吗?

根据我上面的评论,试试这个

Private Sub button1_Click()

Dim LastRow As Long
LastRow = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row

Sheet2.Cells(LastRow + 1, 5).Value = Comment.Value

'cant be left empty
If (name1.Value <> "" And name2.Value <> "" And szsz.Value <> "" And Sum.Value <> "") Then
    Sheet2.Cells(LastRow + 1, 1).Value = name1.Value
    Sheet2.Cells(LastRow + 1, 2).Value = name2.Value
    Sheet2.Cells(LastRow + 1, 3).Value = szsz.Value
    Sheet2.Cells(LastRow + 1, 4).Value = Sum.Value

End If


End Sub
Private子按钮1\u Click()
最后一排一样长
LastRow=Sheet2.单元格(Rows.Count,1).结束(xlUp).行
Sheet2.单元格(LastRow+1,5).Value=Comment.Value
“不能让它空着
如果(name1.Value“”和name2.Value“”和szsz.Value“”和Sum.Value“”),则
Sheet2.单元格(LastRow+1,1).Value=name1.Value
Sheet2.单元格(LastRow+1,2).Value=name2.Value
Sheet2.单元格(LastRow+1,3).Value=sz.Value
Sheet2.单元格(LastRow+1,4).Value=Sum.Value
如果结束
端接头

因为
Sheet2.Cells(theLastRow+1,1).Value=name1.Value
添加了一行xd,另外,请查看哪些行可以提供查找最后一行的其他方法。@findwindows 2是的,我认为这是问题所在,但我仍然不知道如何修复它(除了删除不应该删除的+1),这是可能的,还是我应该只删除我想要的+1?我对这一点还不熟悉,所以它可能很琐碎,但我仍然找不到其他方法来实现它,但我仍然好奇它是否可行。请看下面我的答案。基本上,不要使用该函数,这样它就不会在每次尝试设置值时调用。您每次都在调用LASTROW,写入工作表,因此下一次调用最后一行将是您刚刚写入的。不确定OP是循环现有数据,还是只是在输入工作表并按下按钮时将数据写入工作表。。您可能希望两个版本都发布。我必须在输入数据时写入数据。