我对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标题。
答案 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