문제

다음 VBA 코드 (Excel 2007)는 오류 1004, "범위 클래스의 자동 수제 실패"로 실패합니다. 누구든지 고치는 방법을 말해 줄 수 있습니까?

Dim src As Range, out As Range, wks As Worksheet

Set wks = Me
Set out = wks.Range("B:U")
Set src = wks.Range("A6")
src.AutoFill Destination:=out

(참고 : 나는 Googled 등.


누군가의 제안에 따라 나는 자동 조합 라인을 다음과 교체하려고 시도했습니다.

src.Copy out

이것은 내 Excel 세션을 100% CPU를 소비하는 명백한 무한 루프에 던지고 영원히 매달린 효과가있었습니다.


좋아, 분명히 소스는 자동 제외 대상 범위의 일부 여야합니다. 그래서 내 코드는 이제 다음과 같습니다.

Dim src As Range, out As Range, wks As Worksheet

Set wks = Me
Set out = wks.Range("B1")
Set src = wks.Range("A6")
src.Copy out

Set out = wks.Range("B:U")
Set src = wks.Range("B1")
src.AutoFill Destination:=out, Type:=xlFillCopy

마지막 줄에서 동일한 오류.

도움이 되었습니까?

해결책

에서 MSDN:

대상에는 소스 범위가 포함되어야합니다.

B:U 포함되어 있지 않다 A6 따라서 오류가 있습니다. 나는 당신이 아마 원한다고 생각합니다 out 설정해야합니다 A6:U6.

열 이름 만 지정하면 원하는 Behvaiour가 될 가능성이없는 열의 모든 행을 채우는 것을 의미합니다.


업데이트

아래의 OP의 의견과 원래 답변으로 업데이트하면 다음과 같은 트릭을 수행 할 수 있습니다.

Dim src As Range, out As Range, wks As Worksheet

Set wks = Me
Set out = wks.Range("B1")
Set src = wks.Range("A6")
src.Copy out

Set out = wks.Range("B1:U1")
Set src = wks.Range("B1")
src.AutoFill Destination:=out, Type:=xlFillCopy

Set out = wks.Range("B:U")
Set src = wks.Range("B1:U1")
src.AutoFill Destination:=out, Type:=xlFillCopy

AutoFill 한 번에 단일 방향 (예 : 수평 또는 수직)으로 제한됩니다. 단일 셀에서 2 차원 영역을 채우려면 먼저 해당 영역의 한쪽 가장자리를 따라 선을 자동 채우고 해당 지역을 가로 질러 스트레칭해야합니다.

서식을 복사하고 내용을 지우는 특정 사례 (소스 셀이 비어 있기 때문에) 이는 다음과 같습니다.

Dim src As Range, out As Range, wks As Worksheet

Set wks = Sheet1
Set out = wks.Range("B:U")
Set src = wks.Range("A6")
src.Copy out

다른 팁

만들다 AutoFill 일, 당신은 범위를 만들어야합니다 AutoFill 더 이상 소스 범위. 자동 수소 범위가 소스 범위와 동일하면 해당 범위에서 자동 수소가 없으므로 오류가 발생합니다.

1004 : 범위 클래스의 자동 수제 방법이 실패했습니다.

따라서 자동 수소 범위를 소스 범위보다 더 많이 만들고 오류가 사라질 것입니다.

당신이 자동화하고 싶다면 당신은 그냥 ...

Private Sub Autofill()

'Select the cell which has the value you want to autofill
Range("Q2").Select

'Do an autofill down to the amount of values returned by the update
Selection.AutoFill Destination:=Range("Q2:Q10")

End Sub

이것은 지정된 범위로 자동화됩니다.

THS가 도움이됩니까?

이것이 누군가에게 도움이 될지 확실하지 않지만 비슷한 것이 필요했습니다. 대상으로 셀을 선택하는 것;

dim rowcount as integer
Sheets("IssueTemplate").Select ' Whatever your sheet is
rowcount = 0
rowcount = Application.CountA(Range("A:A"))'get end range
Cells(4, 3).Select 'select the start cell
'autofill to rowcount
Selection.AutoFill Destination:=Range("C4:C" & rowcount), Type:=xlFillDefault 

내 예에서 나는 OA100에서 OA ###?까지 폴더 이름 목록을 자동 생성해야했으며, 이는 제대로 작동했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top