2016-06-24 1 views
1

나는 작동하는 몇 가지 코드가 있지만 연속으로 여러 번 작동하도록하는 데 문제가 있습니다. 그것은 첫 번째 빈 열을 다른 시트의 수식으로 채 웁니다.자동 채우기 다음 열 VBA

Dim source As Worksheet 
Dim destination As Worksheet 
Dim EmptyColumn As Long 
Dim LastRow As Long 

Set source = Sheets("vlookup") 
Set destination = Sheets("COMMIT") 

LastColumn = destination.Cells(1,destination.Columns.Count).End(xlToLeft).Column 
LastRow = Worksheets("COMMIT").Range("A:A").Rows.Count 

If IsEmpty(destination.Range("A2")) = False Then 
EmptyColumn = LastColumn + 1 
destination.Cells(3, EmptyColumn).Formula = "=INDEX(PORT!$S$5:$S$4000,MATCH(COMMIT!$G3,PORT!$G$5:$G$4000,0))" 
LastRow = ActiveSheet.UsedRange.Rows.Count 
Range("AL3").AutoFill destination:=Range("AL3:AL" & LastRow) **'This is where I'm having issues'** 
End If 

나는 다음 빈 컬럼에 인덱스 수식을 허비하는 데 싶지만, 난 단지 내가 설정 한 범위에 넣어하는 방법을 알고 난이 프로그램을 실행할 때 다음 열로 이동하지 않습니다 매크로.

내가 어떻게이 문제를 해결할 수 있을지에 대한 의견이 있으십니까?

나를 도와 주신 Scott에게 감사드립니다.

이제 내 코드에서 또 다른 질문이 생겼습니다.

Set cellSource = Worksheets("COMMIT").Range(Cells(1, LastColumn).Address) 
Set cellTarget = Worksheets("COMMIT").Range(Cells(1, LastColumn), Cells(1, EmptyColumn)) 
If detntn.Range("A2") <> "" Then 
cellSource.AutoFill destination:=cellTarget, Type:=xlFillDefault 
End If 

이제 "Commit"워크 시트에서 수식을 복사하여 첫 번째 빈 열의 첫 번째 셀에 붙여 넣으려고합니다. 어떤 이유로이 코드가 작동하지 않습니다. 왜 누군가가 냄새를 맡을 수 있는지 궁금합니다. 도와 주셔서 미리 감사드립니다.

+0

수식을 다음 열로 이동할 때 수식을 똑같이 유지 하시겠습니까? 또는 새로운 열에 상대적으로 열을 변경 하시겠습니까? 고정 참조를 사용하고 있으므로 동일한 수식을 원하지만 꼭 확인하고 싶다고 생각합니다. 또한, 나는 [비슷한 질문에 대답했다] (http://stackoverflow.com/a/38016993/4650297). 그러면 열을 반복하는 방법을 알 수 있습니까? – BruceWayne

+0

@ 배트맨 감사합니다. 너는 올바르게 생각했다. 나는 잠시 동안이 웹 사이트를 샅샅이 뒤졌고 다른 스레드에서 당신의 대답에 비틀 거리지 않았습니다. 거기에 안내해 주셔서 고마워요! – mynameisgooch

+0

그것은 다른 질문이며 질문을 변경함으로써 대답을 무효화하기 시작합니다. 새로운 질문을 올리십시오. –

답변

1

문제의 일부는 변수에 예약어를 사용했음을 나타냅니다. 자동 완성 기능을 살펴보십시오. 대상을 사용합니다.

그런 다음 Range 대신 Cells()을 사용하여 마지막 열을 참조 할 수 있습니다.

Dim source As Worksheet 
Dim detntn As Worksheet 
Dim EmptyColumn As Long 
Dim LastRow As Long 

Set source = Sheets("vlookup") 
Set detntn = Sheets("COMMIT") 

LastColumn = detntn.Cells(1, detntn.Columns.Count).End(xlToLeft).Column 
LastRow = Worksheets("COMMIT").Range("A:A").Rows.Count 

If detntn.Range("A2")<>"" Then 
    EmptyColumn = LastColumn + 1 
    detntn.Cells(3, EmptyColumn).Formula = "=INDEX(PORT!$S$5:$S$4000,MATCH(COMMIT!$G3,PORT!$G$5:$G$4000,0))" 
    LastRow = ActiveSheet.UsedRange.Rows.Count 
    detntn.Cells(3, EmptyColumn).AutoFill destination:=detntn.Range(detntn.Cells(3, EmptyColumn), detntn.Cells(LastRow, EmptyColumn)) 
End If 
+0

와우! 정말 고맙습니다! 나에게 닥친 또 다른 질문에 답하지 않길 바란다. – mynameisgooch