2017-09-15 182 views
0

我已经在表格中创建了一个数据输入表单,并希望输入的信息被提取并放置在一张单独的表格中。(Excel)数据输入表格将数据输入到表格

下面的图片会让你更好地了解我正在努力实现的目标。

https://imgur.com/a/LpWAQ

我明白,我将需要一个宏,以实现这一目标链接到一个按钮。

我试着谷歌的解决方案,并遇到这个代码,显然需要的数据并将其输入到表中。这是代码;


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

你尝试过什么码? – braX

+0

只需编辑您的帖子并添加代码即可。 – braX

+0

您需要将代码调整为电子表格。它目前的基础是你的数据条目表上的行数,而不是测试日志表...... –

回答

0

如果你还没有在VBA编码前,然后执行以下操作:

1)填写所有字段表单中的一些真实的数据。

2)开始录制一个宏。 3)在你的表格中插入一个新行(右键点击 - >插入 - >上面的表格行)。

4)复制表单中的第一个单元格(资产标签)。

5)单击输出表中的相关输出单元(测试日志中的C5)。

6)将值粘贴到单元格中。

7)重复步骤4-6,直到完成所有表单域。

8)停止录制宏。 9)右键单击按钮并将宏指定给它。

10)测试,修复并重试。

通过这样做,您可以在VBA中使用宏记录引擎,这是一个很好的开始使用VBA的方式,而不需要太多的知识。您想要将行添加到表中,以便宏创建的固定引用(例如Test Log'!$C$5)始终引用空单元格。

不幸的是,宏录像机会记录下你所做的所有事情,所以你通常会想要进入代码并改变它,并让它工作。但这实际上是开始使用VBA的好方法。

当您清除窗体并将其分配给不同的按钮时,您的第二个项目将记录新的宏。

+0

现在你已经添加了你的代码。只要在上面做第9步)! –

+0

我尝试了这一步一步的过程,因为它似乎合乎逻辑,应该工作。当我们向表中添加新行时,我已经运行了代码并且在代码的开始部分抛出了一个错误。 这是造成麻烦的线路; Selection.ListObject.ListRows.Add AlwaysInsert:= True – Mark

+0

此外,错误消息说明如下; 运行时错误'91':对象变量或块变量未设置 – Mark

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