使用if语句查找最后一行

时间:2015-01-21 02:50:34

标签: excel vba excel-vba

我对VBA非常陌生,只使用youtube视频和试错法自学了一点。请说明一点,回答时不要做任何事情。

我编写的代码是假设使用sheet1上的命令按钮提交数据并将信息存储在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

它不会让我在这里发布照片,但我在表2中有一个表格,从B3到K3标题。

1 个答案:

答案 0 :(得分:1)

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

首先,您不必选择工作表/单元格来获得所需的结果。事实上,这样做可以作为事实上的惩罚,因为它对系统征税。此外,在这种特定情况下,将值存储到变量中可能是多余的,因为您没有对它们进行大量处理。

如果我正确理解了您的代码,您正在复制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