2014-02-06 1 views
0

큰 목록에서 변경하는 매크로가 있습니다. 현재 내가 작성한 모든 변경 사항에 대해 msgbox()가 표시됩니다. 이는 오히려 침입 중입니다. 대신 이러한 모든 변경 사항을 로그 파일에 기록하고 싶습니다.다른 워크 시트의 현재 셀에 쓰는 방법

그러나 나는 그것을 피할 수 있다면 로그 파일에 어떤 줄이 있는지 기억하고 싶지 않습니다.

그래서 로그 파일의 CurrentCell에 활성화 코드를 쓰지 않고 그 코드를 한 행 아래로 이동해야합니다.

쉬운 방법이 있나요?

thanx, Gijs.

+0

예, 할 수있는 방법이있다. 관련 코드 조각을 포함하도록 질문을 편집하십시오. 또한, [이 참조하십시오] (http://stackoverflow.com/help/on-topic) – ARich

+1

[this] (http://stackoverflow.com/questions/71180/how-can- i-find-last-row-that-that-data-in-the-excel-sheet-with-a-macro도 포함합니다. –

답변

-1

워크 시트의 현재 셀을 가져 오려면 활성화해야한다고 생각하지만 사용자가 포커스 변경을 실제로 인식하지 못하도록 화면 업데이트를 끌 수 있습니다.

아래 코드는 통합 문서의 시트 2에있는 활성 셀의 주소를 가져 와서 디버그 메뉴에 출력하고 커서를 다음 행으로 이동 한 다음 현재 시트로 되돌리고 스왑하기 전에 화면 업데이트 :

난이 도움이되기를 바랍니다, 앤드류

Sub MoveToNextCell() 

    'Turn off screen updates 
    Application.ScreenUpdating = False 

    'Get the active cell in worksheet 2 
    ThisWorkbook.Sheets(2).Activate 

    'Execute the movement 
    Debug.Print "Pre-movement address: " & Application.ActiveCell.Address 
    ThisWorkbook.ActiveSheet.Cells(Application.ActiveCell.Row + 1, Application.ActiveCell.Column).Select 
    Debug.Print "Post-movement address: " & Application.ActiveCell.Address 

    'revert back to the original worksheet 
    ThisWorkbook.Sheets(1).Activate 

    'Turn screenupdates back on 
    Application.ScreenUpdating = True 

End Sub 
+0

OP는 특별히 셀을 활성화 할 필요가없는 솔루션을 요구했습니다. Activate 메서드를 사용하여 ActiveCell 또는 Selection 개체를 단순히 사용하는 것이 좋습니다. –

+0

그래,하지만 OP도 "나는 그것을 피할 수 있다면 로그 파일에 어떤 줄이 있는지 기억하고 싶지 않다"고 말했다. 이는 일반적으로 액티비티 셀 메소드를 사용하지 않으려는 방식입니다. 즉, 행 개수를 포함하는 정수 변수를 사용하고 각 항목 다음에 증가합니다. 내가 개인적으로 그렇게하는 것은 아니지만, 가장 가까운 곳에서 명시된 요구 사항을 충족시킬 수 있습니다. –