2016-06-27 2 views
0

하나의 통합 문서에서 매크로를 실행하고 각 실행 후에 비활성 통합 문서로 이동하여 활성 통합 셀 (또는 다른 통합 문서에 가기 전에 활성화 된 셀)을 강조 표시해야합니다.). 다음은 내가 시도한 것입니다 :비활성 통합 문서의 활성 셀 강조 표시

myWorkbook.Sheets("mySheet").Activate 
Worksheets("mySheet").ActiveCell.Interior.ColorIndex = 8 

두 번째 라인에서 객체가이 속성 또는 메소드를 지원하지 않는다는 오류가 계속 발생합니다. 시트가 열려 있지만 현재이 코드가 실행되는 시트가 아닙니다.

가능하면이 문제를 해결하고 이후 커서/선택 항목을 다음 셀로 옮길 수 있습니까?

감사합니다!

편집은 : 나는 또한 당신은 내가 일을하지 않는 것이 좋습니다 ActiveCell을 사용하고 myWorkbook.Sheets("mySheet").ActiveCell.Interior.ColorIndex = 8

+0

'myWorkbook.Worksheets ("mySheet")를 사용해 보았습니까? (1,1) .Interior.ColorIndex = 8'? (올바른 주소로 (1,1)을 조정해야합니다). – Ralph

+0

@Ralph 예, 이전에 시도했습니다. 죄송합니다. 방금 시도한 최신 버전을 게시했습니다. 또한 통합 문서가 매크로를 지원하는지 확인했지만 해결되지 않았습니다. – pez

답변

0

active cell 개체는 worksheet object에 속하지 않습니다. 이는 시트 당 하나가 아닌 활성 셀 객체가 하나뿐이기 때문입니다. 당신은 당신이 직접과 같이를 ActiveCell에 호출 할 수 있습니다하여 MySheet 활성화했으면

:

작업 예 내가 @BruceWayne에 동의

myWorkbook.Sheets("mySheet").Activate 
ActiveCell.Interior.ColorIndex = 8 

. 가능한 경우 SelectActivate으로 전화하지 마십시오.

+0

'Activate '를 호출 할 때의 단점은 무엇입니까? 비활성 통합 문서의 셀을 호출하지 않고 강조 표시 할 수 있습니까? – pez

+1

@pez - 본 것처럼, 셀을 실제로 활성화 시켜야만 Activate를 사용할 수 있습니다. 훨씬 더 좋은 방법은 데이터를 직접 처리하는 것입니다. ActiveCell이'C1'이 될 것이라면, Range ("C1")를 사용하는 것이 더 좋습니다. Interior.ColorIndex = ...'또한,'ActiveCell' 또는'ActiveSheet'는 isn ' 항상 생각할지도 모르는 것이므로 피하는 것이 좋습니다. – BruceWayne

+1

@ BruceWayne의 대답에 일부 무승부를 강조하는 [link] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)가 있습니다. 한 가지 문제는 코드가 실행되는 동안 사용자가 포커스를 이동하지 못하게하는 것입니다. 일반적으로 명시 적으로하는 것이 가장 좋습니다. 몇 가지 기준에 따라 올바른 셀을 선택하는 코드는 UI의 상태를 확인하는 데 더욱 강력합니다. –

1

을 시도했습니다.

이 같이 지적
Private Sub Worksheet_SelectionChange(ByVal target As Range) 
    Target.Interior.ColorIndex = 8 
End Sub 

, 코드에서, 당신이 이제까지 셀을 선택하지 않은 : 당신이 현재 셀을 강조하려는 경우 Avoid using .Select/.Activate

, 당신은 워크 시트 모듈에 매크로를 둘 필요가 그래서 오류가 발생했습니다.

또한이 메서드는 다른 모든 셀을 강조 표시합니다. 강조 표시해야하는 다른 셀이 없다면 거기에있는 한 줄 바로 앞에 cells.interior.colorindex = 0을 추가하십시오. 또한이 문제를 해결하는 here's a thread입니다. VBA없이 시도하고있는 것을 할 수 있습니다.

+0

다른 통합 문서에서 이것을 실행할 수 있습니까? 내가 강조하려고하는 시트는 다른 워크 북에 있습니다. 통합 문서에 강조 표시 할 매개 변수를 추가하여 편집 할 수 있습니까? – pez

+0

@pez - 매크로에서 새 통합 문서의 어떤 셀을 강조 표시할지 알고 있습니까? 그렇게하면 더 쉬울 것입니다. 이 코드를 호출 할 코드가 있습니까? – BruceWayne

+0

예. 제가 강조하고자하는 시트는 기본적으로 A 열에있는 약 1,000 개의 숫자 목록입니다. 한 번에 하나씩 처리 할 때마다 하나씩 강조 표시합니다. 그래서 내가 처음 99 번을 처리했다면 VBA없이 마우스/커서로 선택한 마지막 셀은 셀 100이었습니다. 강조하려는 셀입니다. 첫 번째 99 개는 이미 강조 표시되어 있습니다. 그 다음은 101이 될 것입니다. 가능한 경우 번호를 하드 코드하지 않고 마지막으로 선택한 셀을 강조 표시하려고합니다. – pez