(Excel)数据输入表格将数据输入表格

时间:2017-09-15 11:05:06

标签: excel vba forms

我在工作表中创建了一个数据输入表单,并希望将输入的信息提取出来并放在单独的表格中的表格中。

下面的图片可以让您更好地了解我想要实现的目标。

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

2 个答案:

答案 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
相关问题