2013-04-17 5 views
2

Excel 통합 문서의 첫 번째 시트에 입력 한 정보 ("항목")를 동일한 통합 문서의 별도 시트 인 "데이터베이스"에 붙여 넣는 VBA 서브 루틴에 다소 어려움이 있습니다. 필요한 것은 데이터베이스의 다음 빈 행에 데이터를 추가하는 것입니다.Excel VBA 빈 행에 복사

나는 이것이 아주 일반적인 질문이지만, 나는 오늘 아침 최고의 부분을 구글에서보고 있었고 그것을 얻을 수 없다는 점에 감사한다! 지금까지 관리 한 코드는 데이터를 복사하지만 항상 첫 번째 행 덮어 쓰게됩니다 :

Sub CopyDataToDatabase() 

Application.ScreenUpdating = False 

Dim r As Range 
Set r = Sheets("Entry").Range("B6:M6") 
For Each cell In r 
    If IsEmpty(cell) Then 
     MsgBox ("Error - all boxes must be filled in!") 
     Cancel = True 
     Exit Sub 
     Exit For 
    End If 
Next 

Dim NextRow As Range 
Set NextRow = Sheets("Database").Range("A2:L2").End(xlUp).Offset(1, 0) 
' Set NextRow = Sheets("Database").Range("A" & Rows.Count).End(xlUp).Row + 1 
Sheets("Entry").Range("B6:M6").Copy 
NextRow.PasteSpecial (xlValues) 

MsgBox ("Data added successfully!") 

Sheets("Entry").Range("B6:M6").ClearContents 

Application.CutCopyMode = False 
Application.ScreenUpdating = True 
End Sub 

설정 NextRow에 대한 댓글이 작동하지 않았다 내가 노력 다른 방법은,입니다 (오류가 있었다 '객체 필수 ').

감사의 말을 전하면서 ​​도움이 되었으면 설명해 주시면 감사하겠습니다. VBA에 조금 익숙해졌습니다.

미리 감사드립니다.

+0

내가이 링크 http://stackoverflow.com/questions/11169445/error-finding-last-used-cell-in-vba 한 번 봐 가지고 추천이 골 A의 마지막 셀을 찾아보십시오 아래 @ChrisNeilson에 지정된 메소드를 사용하십시오. 그러나 Col A Last 셀이 Col B - Col L과 같지 않을 수도있는 경우에는 .Find를 사용하여 마지막 셀을 찾은 다음이를 사용하여 범위를 만듭니다. –

답변

1

주석 처리 된 행은 거의 올바른 방법입니다.

Set NextRow = Sheets("Database").Range("A" & Rows.Count).End(xlUp).Offset(1,0) 
+0

+1 모든 열 (A에서 L까지)이 동일한 최종 값을 가질 때 작동합니다. –

+0

완벽하게 일했습니다 - 도와 주셔서 감사합니다. 네, 다행스럽게도 모든 데이터 값을 채워야하므로 서로 다른 열 마지막 행은 문제가되지 않습니다! –

0

시트 속성이 UsedRange이지만 내 경험에 의하면 오류가 발생하기 쉽습니다. 내가 항상하는 방법은 첫 번째 빈 것을 찾기 위해 행을 반복하는 것입니다. VBA 코드를 작성에서 일반적으로

Dim iRow as integer 
iRow = 1 
Dim ws as Worksheet 
Set ws = Worksheets("Database") 
Do While ws.Cells(iRow, 1) <> "" 
    iRow = iRow + 1 
Loop 

은 내가 (Selection 객체를 사용하거나 키 누름을 모방 예를 들어) 사용자로 엑셀로 무엇을 모방하지 않도록하려고합니다.