2017-09-15 222 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