我在工作表中创建了一个数据输入表单,并希望将输入的信息提取出来并放在单独的表格中的表格中。
下面的图片可以让您更好地了解我想要实现的目标。
我知道我需要将宏链接到按钮才能实现此目的。
我尝试使用谷歌解决方案并遇到了这个代码,它显然将数据输入到表格中。这是代码;
Sub copyRow()
Dim ws As Worksheet
Dim lRow As Long
' define which worksheet to work on, i.e. replace Sheet1 with the name of your sheet
Set ws = ActiveWorkbook.Sheets("Data Entry")
' determine the last row with content in column A and add one
lRow = ws.Cells(Rows.Count, "A").End(xlUp).Row + 1
' combine G7 and G8 and copy into column A, next empty row
ws.Range("A" & lRow) = ws.[G7] & " " & ws.[G8]
' copy the other cells into their ranges
ws.Range("C6:F6").Copy ws.Range("B" & lRow)
ws.Range("C7:F7").Copy ws.Range("F" & lRow)
ws.Range("C8:F8").Copy ws.Range("J" & lRow)
ws.Range("C9:F9").Copy ws.Range("N" & lRow)
ws.Range("C10:F10").Copy ws.Range("R" & lRow)
ws.Range("C11:F11").Copy ws.Range("V" & lRow)
ws.Range("C12:F12").Copy ws.Range("Z" & lRow)
ws.Range("G6").Copy ws.Range("AD" & lRow)
ws.[A1].Select
End Sub
答案 0 :(得分:0)
如果您之前没有使用VBA编码,请执行以下操作:
1)使用一些实际数据填写表单中的所有字段。
2)开始录制宏。
3)在表格中插入一个新行(右键单击 - >插入 - >上面的表格行)。
4)复制表单中的第一个单元格(资产标签)。
5)单击输出表中的相关输出单元格(测试日志中的C5
)。
6)将值粘贴到单元格中。
7)重复步骤4-6,直到完成所有表单字段。
8)停止录制宏。
9)右键单击按钮并将宏指定给它。
10)测试,修复并重试。
通过这样做,您可以在VBA中使用宏录制引擎,这是一种在不太了解VBA的情况下开始使用VBA的好方法。您希望将行添加到表中,以便宏创建的固定引用(例如Test Log'!$C$5
)始终引用空单元格。
不幸的是,宏录制器会记录您所做的一切,因此您经常需要进入代码并更改此代码以使其正常工作。但这实际上是开始使用VBA的好方法。
当您清除表单并将其分配给其他按钮时,您的第二个项目将是录制新的宏。
答案 1 :(得分:0)
试试这个
Sub Demo()
Dim lastRow As Long, i As Long
Dim srcSht As Worksheet, destSht As Worksheet
Dim cellArr As Variant, valueArr(0 To 9) As Variant
Application.ScreenUpdating = False
Set srcSht = ThisWorkbook.Sheets("Data Entry") 'this is your Data Entry sheet
Set destSht = ThisWorkbook.Sheets("Test Log") 'this is your Test Log sheet
cellArr = Array("E8", "C11", "J8", "C20", "C17", "C14", "C23", "C26", "C29", "C32") 'store the cell address in an array
With srcSht 'get the corresponding cell values from Data Entry sheet using cellArr
For i = LBound(cellArr) To UBound(cellArr)
valueArr(i) = .Range(cellArr(i))
Next i
End With
With destSht 'add data as a row at bottom of Test Log sheet
lastRow = .Cells(.Rows.Count, "C").End(xlUp).Row + 1
'.Range("C" & lastRow).Resize(1, UBound(valueArr) + 1).Value = valueArr
.Range("C" & lastRow & ":L" & lastRow).Value = valueArr
End With
Application.ScreenUpdating = True
End Sub