Microsoft KB Archive/211806

= XL2000: BottomRightCell/TopLeftCell Incorrect with Merged Cell =

Article ID: 211806

Article Last Modified on 11/23/2006

-

APPLIES TO


 * Microsoft Excel 2000 Standard Edition

-



This article was previously published under Q211806





SYMPTOMS
In Microsoft Excel, if you run a Visual Basic for Applications macro that checks the BottomRightCell property or TopLeftCell property of a drawing object, AutoShape, chart, or other object, the address of the cell may appear to be incorrect.



CAUSE
This problem occurs if the BottomRightCell or TopLeftCell property returns the address of a merged cell.



WORKAROUND
Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes that you are familiar with the programming language being demonstrated and the tools used to create and debug procedures. Microsoft support professionals can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific needs. If you have limited programming experience, you may want to contact a Microsoft Certified Partner or the Microsoft fee-based consulting line at (800) 936-5200. For more information about Microsoft Certified Partners, please visit the following Microsoft Web site:

https://partner.microsoft.com/global/30000104

For more information about the support options that are available and about how to contact Microsoft, visit the following Microsoft Web site:

http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

If you want to return the address of the merged cell that lies beneath the upper-left corner or the lower-right corner of an object, modify the code so that it checks the address of the upper-leftmost cell of the MergeArea range that lies beneath the object. For example, instead of using the following code X = ActiveSheet.Shapes(1).TopLeftCell.Address use this code: X = ActiveSheet.Shapes(1).TopLeftCell.MergeArea.Resize(1, 1).Address The MergeArea property returns the entire range of cells that is merged into a single cell. The Resize method returns the upper-leftmost cell of the MergeArea range. The Address property returns the address of the merged cell.

You can use the same process with the BottomRightCell property of objects.



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.



MORE INFORMATION
When you check the BottomRightCell property or the TopLeftCell property of an object in Microsoft Excel, the property does not recognize that the worksheet may contain merged cells. As a result, each property returns the address of the cell that would have been under the upper-left or lower-right corner of the object if the cells had not been merged.

To demonstrate this behavior, follow these steps:  In Microsoft Excel 2000, create a new workbook. Select the range of cells B2:F6. On the Format menu, click Cells. On the Alignment tab, click to select the Merge cells check box. Using the Rectangle tool on the Drawing toolbar, draw a rectangle that is completely within the merged cell. On the Tools menu, point to Macro, and then click Visual Basic Editor.</li> On the View menu, click Immediate Window.</li>  Type the following command ?Sheets(1).Shapes(1).BottomRightCell.Address and then press ENTER.

The Immediate window returns $F$6, even though the rectangle is completely within the merged cell ($B$2). </li>  Type the following command ?Sheets(1).Shapes(1).BottomRightCell.MergeArea.Resize(1, 1).Address and then press ENTER.

The Immediate window returns $B$2, the correct address. </li></ol>

<div class="references_section">