2013-05-08 4 views
0

내 선택에 MergeCell이 포함되어 있는지 확인하고 싶다면 Excel에서 해당 선택 사항을 처리하고 싶지 않습니다. 그러나 selection.MergeCells를 호출 할 때마다 원래 선택 항목이 변경되고 MergeCells가 경계로 묶는 영역이 포함되지 않습니다. 나는 제한/버그이며 해결 될 수 없다는 것을 알려주는 아래의 MSDN 링크를 확인 했으니 까 누구든지 나를 도와 줄 수 있습니까?selection.MergeCells 속성이 원래 선택을 Excel에서 변경합니다.

http://social.msdn.microsoft.com/Forums/en-US/exceldev/thread/63920347-c731-4046-b96f-3f3e7eabddd8

+0

코드를 게시 할 수 있습니까? –

+0

아래 코드 줄을 사용하여 MergeCell이 현재 Range/Selection에 있는지 부분적으로 또는 완전히 선택할 수 있는지 확인하면 원래 선택 영역이 자동으로 확장됩니다. if (Convert.IsDBNull (rg.MergeCells) || (bool) rg.MergeCells == true) – user698532

+0

우리는 가능한 해결책을 확실하게 테스트 할 수 있도록보고있는 내용을 복제 할 수있는 절차가 필요하다고 생각합니다. 게시 한 링크에 설명 된 단계와 실행하려는 간단한 코드에 문제가있는 것과 같은 것입니다. 그런 다음 문제를 일으키지 않고 코드를 작동시키는 데 집중할 수 있습니다. – RBarryYoung

답변

0

귀하의 경우 문제는 (그들이 인 selectionchanged 이벤트에 있기 때문에) 당신이 가리키는 링크에서 약간 다릅니다. 귀하의 경우, 문제는 귀하가 VBA 코드에서 Selection.MergeCells을 사용하고 있다는 것입니다. 그러지 마.

VBA 코드에서 Select 관련 동작을 사용하지 않는 것이 좋습니다. 느리고 천천히 진행되므로 의도하지 않은 부작용이 많습니다. 대신 범위 개체를 사용하십시오. 선택 범위 자체가 너무 밀접하게 선택 개체에 바인딩되어 있기 때문에, 당신은과 같이, 연결을 해제해야 할 수 있습니다

Dim rng As Range, ws As Worksheet 
'get the current worksheet 
Set ws = ActiveSheet 
'get the selection-range 
Set rng = Selection 
'get the same range, but disassociated from the selection 
'(I think this works?) 
Set rng = ws.Range(rng.AddressLocal) 

If rng.MergeCells Then ... 

이 작동하지 않는 경우 나 (내가 지금 그것을 테스트 할 수 없습니다) 알게로 거기에 사용할 수있는 더 복잡한 접근법이 있습니다.

+0

나는 이것을 시도했지만 행운이 없다. C#과 VBA MACRO를 사용해 보았지만 두 경우 모두 MergeArea를 포함하도록 선택 사항을 확장 했으므로 이제 어떻게해야 할까? – user698532