2017-11-21 37 views
-4

내 Excel 개체 중 하나에 문제가있는 것 같습니다. 아래 스 니펫을 살펴보십시오. 서브 루틴 Run_all()을 만들었고, 단계별로 함수 row_count()를 실행하고 실행을 시작했습니다. 그러나 첫 번째 강조 표시된 행에 도달하면 오류가 발생합니다.VBA 서브 루틴 런타임 오류 '1004'

** 기능에서 참조하는 시트가 올바르게 입력되었습니다. 예를 들어, 아래쪽 서브 루틴 CA_Copy_Paste_를 실행하면 올바르게 작동하고 오류가 발생하지 않습니다.

Excel이 기능에서 "시트 3"을 인식하지 못하는 이유는 무엇입니까? 더 많은 문맥을 위해, 내가 "Sheet4"를 타이핑 할 때만 작동합니다. "Sheet1"또는 "Sheet2"에서 ​​작동하지 않습니다. 당신은 당신이 활성화 또는 워크 시트의 셀 또는 셀 범위를 선택하기 전에 워크 시트를 활성화해야합니다 당신의 목표를 달성하기 위해 ALL 기타 사항 서보 -OFF 및 .Activate을 사용하여 주장하는 경우

This image shows the portion of my VBA in question. Since this is my first question, I cannot embed images, but have to use the below link

+1

'Sheets ("Sheet 3")이 필요하기 때문에 활성화하기 전에. 시트에없는 경우 활성화 된 셀을 타겟팅 할 수 없습니다. 명시 적으로 시트 이름을 참조하는 경우에도 셀을 타겟팅 할 수 없습니다. 'Activesheet'이기 때문에 아마도'Sheet4'와 함께 작동합니다 – dwirony

+4

1. 코드 자체를 텍스트가 아닌 텍스트로 넣어주세요. 사진을 붙여 넣을 수 없습니다. 2. 가장 느린 방법 인 루프를 사용하지 않는 열의 첫 번째 빈 셀을 찾는 더 좋은 방법이 있습니다. 여기를보십시오 : https : //stackoverflow.com/questions/11169445/error-in-finding-last-used-cell-in-vba 3.'.Activate'와'.Select'를 피하십시오, 다시 그들은 코드를 느리게합니다. 참조 : https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba –

+0

'Rowcount = Worksheets ("시트 3") 셀 (워크 시트 ("시트 3") .Rows.Count, 3) .End (xlUp) .Row + 1'은 C 행의 데이터가있는 마지막 행 다음의 행을 반환합니다. –

답변

1

. 당신이 시도하고 단 한 줄의 코드에서이 작업을 수행하는 몇 가지 '속기'를 사용하려면

worksheets("sheet 3").activate 
activesheet.range("c4").activate 

다음 Application.GoTo 방법으로 전환합니다. 어떤 경우

Application.Goto reference:=worksheets("sheet 3").range("c4") 

, 당신은 선택의 사용을 피하는 것이 가장 좋은 선택하고 활성화합니다. How to avoid using Select in Excel VBA을 참조하십시오.

+0

fwiw, 나는 당신이 워크 시트의 이름을 고의로 바꾸는 것이 이상하다고 생각합니다. * sheet *와 * 3 * 사이의 공백 – Jeeped

+0

아마도 어리석은 실수를 보상합니다. – jsotola