2013-01-17 4 views
0

워크 시트에 두 개의 매크로가 있습니다. 첫 번째는 특정 셀이 주소가 지정되었는지 확인하고 특정 값을 가지면 다른 매크로가 실행됩니다. 다음 코드가이 용도로 사용됩니다.엑셀 vba 런타임 오류 7 - 메모리 부족

Private Sub Worksheet_Change(ByVal Target As Range) 

If Not Intersect(Target, Range("K10:K1000")) Is Nothing And Target.Value = "Trapezoidal  roof 0.6mm and above" Or Target.Value = "LightBox ballasted" Then 

Application.ScreenUpdating = False 

Call PPAPricePerkWp 

End If 

End Sub 

이 코드는 잘 작동합니다.

두 번째 매크로는 단추를 클릭 할 때 실행됩니다. 이 매크로는 셀/행을 복사하여 스프레드 시트의 다른 부분에 붙여 넣습니다.

매크로를 실행하면 오류 Runtime error 7 - out of memory이 발생하고 위의 코드가 손상됩니다.

특정 열의 셀에 주소가 지정되어 있는지 여부를 확인할 수있는 다른 방법이 있습니까? 위의 오류가 발생하지 않을 것입니까?

+0

'PPAPricePerkWp'에서 어떤 일이 발생합니까? –

+0

열 k에있는 셀의 셀 값을 확인하고 일부 계산에서 값을 아래 셀에 붙여 넣습니다. 'PPAPricePerkWp'가 실행되지 않도록 디버거가'If Not Target' 라인에서 깨집니다. – evoandy

+0

서브 루틴을 호출하기 전에 이벤트를 비활성화하여 셀을 변경할 때마다 Worksheet_Change가 트리거되지 않도록 할 수 있습니다. – SeanC

답변

5

당신이 당신의 서브 루틴을 호출 Worksheet_Change 때마다 트리거되지 않는 있도록 셀

을 변경하기 전에 이벤트를 비활성화 할 수 있습니다 Application.EnableEvents = False

때 당신을 다시 켤 것을 잊지 마세요 완료되었습니다