1

選択範囲に MergeCells が含まれているかどうかを確認したいのですが、含まれている場合は、その選択範囲を Excel で処理したくありません。しかし、 selection.MergeCells を呼び出すたびに、元の選択が変更され、MergeCells で囲まれた領域がラップされます。これは望ましくありません。以下の MSDN リンクを確認しましたが、これは制限/バグであり、解決できないことが示されているため、誰か助けてもらえますか?

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

4

2 に答える 2

-1

あなたの場合の問題は、あなたが指しているリンクとは少し異なります(SelectionChangedイベントにあるため)。あなたの場合、問題はSelection.MergeCellsVBA コードで使用していることです。そうしないでください。

独自の VBA コードで Select 関連のアクションを使用することは常に避ける必要があります (これは遅く、さらに悪いことに、このような意図しない副作用がたくさんあるためです)。代わりに、範囲オブジェクトを使用してください。ただし、Selection Range 自体は Selection オブジェクトに非常に密接にバインドされているため、次のように関連付けを解除する必要がある場合があります。

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 ...

代わりに使用できるより複雑なアプローチがあるため、これが機能しない場合はお知らせください (今はテストできません)。

于 2013-05-08T14:48:28.810 に答える