使用if语句查找最后一行

对于VBA来说,我很新,只是使用YouTubevideo和试用错误来教会自己。 请说明性很强,回答时不要假设。

我有一个编写的代码,假定要使用sheet1上的命令button提交数据,并将信息存储在sheet2的下一个空行上。 我第一次使用的代码非常棒,但下次使用代码时不会填写。 if语句中出现错误1004代码。 请帮忙。

Private Sub CommandButton21_Click() Dim Location As String, EmployeeName As String, itemnumber As Long, color As String, size As String, embloc As String, secopt As String, secplace As String, embstyle As String, lettering As String Worksheets("sheet1").Select Location = Range("e7") EmployeeName = Range("e8") itemnumber = Range("e9") color = Range("e10") size = Range("e11") embloc = Range("e12") secopt = Range("e13") secplace = Range("e14") embstyle = Range("e15") lettering = Range("e16") Worksheets("sheet2").Select Worksheets("sheet2").Range("b3").Select If Worksheets("sheet2").Range("B3").Offset(1, 0) <> "" Then Worksheets("sheet2").Range("B3").End(x1down).Select End If ActiveCell.Offset(1, 0).Select ActiveCell.Value = Location ActiveCell.Offset(0, 1).Select ActiveCell.Value = EmployeeName ActiveCell.Offset(0, 1).Select ActiveCell.Value = itemnumber ActiveCell.Offset(0, 1).Select ActiveCell.Value = color ActiveCell.Offset(0, 1).Select ActiveCell.Value = size ActiveCell.Offset(0, 1).Select ActiveCell.Value = embloc ActiveCell.Offset(0, 1).Select ActiveCell.Value = secopt ActiveCell.Offset(0, 1).Select ActiveCell.Value = secplace ActiveCell.Offset(0, 1).Select ActiveCell.Value = embstyle ActiveCell.Offset(0, 1).Select ActiveCell.Value = lettering Worksheets("sheet1").Select Worksheets("sheet1").Range("e7:e16").ClearContents Worksheets("sheet1").Range("e7").Select End Sub 

它不会让我在这里张贴照片,但是我有一张表格,标题从B3到K3。

代码可以使用一些细化,这是可以理解的,考虑到你是一个新的用户。

首先,你不必select工作表/单元格来获得你想要的结果。 事实上,这样做是事实上的惩罚,因为它给系统征税。 而且,在这种特定情况下,将值存储到variables中可能是多余的,因为您没有对它们进行太多的处理。

如果我正确地理解了你的代码,你将复制Sheet1单元格E7:E16并将它们粘贴到Sheet2中,从列B开始,具有下一个可用行。 如果正确,试试这个代码,并根据需要调整它。

 Private Sub CommandButton21_Click() Dim ws1 as Worksheet Dim ws2 as Worksheet Dim nLastRowSheet2 as Long Set ws1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet2") nLastRowSheet2 = ws2.cells(rows.count,1).end(xlup).row ws1.Range("E7:E16").Copy ws2.Range("B" & nLastRowSheet2 + 1) ws1.Range("E7:E16").ClearContents End Sub