2017-09-15 2 views
0

시트에 데이터 입력 양식을 만들고 입력 된 정보를 추출하여 별도의 시트에있는 테이블에 배치하려고합니다.(Excel) 데이터 입력 양식 표에 데이터 입력

아래 그림은 내가 성취하고자하는 것을 더 잘 보여줍니다.

https://imgur.com/a/LpWAQ

나는 내가 이것을 달성하기 위해 버튼에 매크로 연결해야하기 위하여려고하고 있음을 이해합니다.

Google에 해결책을 시도해 본 결과이 코드를 통해 데이터를 가져 와서 테이블에 입력했습니다. 이것은 코드입니다.

1) 일부 사실적인 데이터와 양식의 모든 필드를 채우십시오 : 당신이 전에 VBA 코딩하지 않은 경우


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

후 다음을 수행합니다.

2) 매크로 기록을 시작하십시오.

3) 테이블에 새 행을 삽입하십시오 (오른쪽 클릭 -> 삽입 -> 테이블 행 위).

4) 양식 (자산 태그)의 첫 번째 셀을 복사하십시오.

5) 출력 시트에서 관련 출력 셀 (테스트 로그의 C5)을 클릭하십시오.

6) 값을 셀에 붙여 넣습니다.

7) 모든 양식 필드를 완료 할 때까지 4-6 단계를 반복하십시오.

8) 매크로 기록을 중지하십시오.

9) 단추를 마우스 오른쪽 단추로 클릭하고 매크로를 할당하십시오.

10) 테스트, 수정 및 다시 시도하십시오.

이렇게하면 VBA에서 매크로 기록 엔진을 사용할 수 있으므로 VBA를 많이 모르는 상태에서 VBA를 시작할 수 있습니다. 매크로가 생성하는 고정 참조 (예 : Test Log'!$C$5)가 항상 빈 셀을 참조하도록 테이블에 행을 추가하려고합니다.

불행하게도 매크로 레코더는 모든 작업을 기록하므로 코드로 이동하여 변경하고 작업을 변경하려는 경우가 많습니다. 그러나 실제로 VBA를 사용하기에 좋은 방법입니다.

그러면 두 번째 프로젝트에서 양식을 지우고 다른 단추에 할당하면 새 매크로가 기록됩니다.

+0

이제 코드를 추가했습니다. 위의 9 단계)를 수행하십시오! –

+0

논리적으로 보이고 작동해야하므로 단계별 프로세스로이 단계를 시도했습니다. 코드를 실행하고 테이블의 새 행을 추가 할 때 코드의 시작 부분에 오류가 발생했습니다. 이것은 문제를 일으키는 선입니다. Selection.ListObject.ListRows.Add AlwaysInsert : = True – Mark

+0

또한 오류 메시지가 다음과 같이 표시됩니다. 런타임 오류 '91': 개체 변수 또는 With 블록 변수가 설정되지 않았습니다. – 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