XL2000: BottomRightCell/TopLeftCell Incorrect with Merged Cell (211806)



The information in this article applies to:

  • Microsoft Excel 2000

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: For more information about the support options that are available and about how to contact Microsoft, visit the following Microsoft Web site: 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:
  1. In Microsoft Excel 2000, create a new workbook.
  2. Select the range of cells B2:F6.
  3. On the Format menu, click Cells. On the Alignment tab, click to select the Merge cells check box.
  4. Using the Rectangle tool on the Drawing toolbar, draw a rectangle that is completely within the merged cell.
  5. On the Tools menu, point to Macro, and then click Visual Basic Editor.
  6. On the View menu, click Immediate Window.
  7. 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).
  8. 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.

REFERENCES

For more information about the BottomRightCell property, in the Visual Basic Editor, click Microsoft Visual Basic Help on the Help menu, type bottomrightcell property in the Office Assistant or the Answer Wizard, and then click Search to view the topic.

Modification Type:MinorLast Reviewed:10/11/2006
Keywords:kbbug kberrmsg kbpending KB211806