XL5: Run-Time Error Using Resize Method with Range Object Type

Last reviewed: September 12, 1996
Article ID: Q123191
The information in this article applies to:
  • Microsoft Excel for Windows, versions 5.0, 5.0c

SYMPTOMS

In Microsoft Excel, when you use the Resize method with a range object that has been defined using the Set statement in a Visual Basic procedure, you receive the following error message:

   Run-time error '1004':
   Resize method of Range class failed

CAUSE

This error message appears when you use the Resize method if you omit the rowSize argument, and the range that you are resizing is defined as a Range Object data type. The Resize method requires the rowSize argument when you use it with a range object that is defined using the Set statement.

Note that this error does not occur when you omit the columnSize argument under this condition.

WORKAROUNDS

To avoid receiving this error message, use either of the following methods:

Method 1: Dimension your range object as an Object or Variant data type

          instead of as a Range Object type as in the following example:

          Sub Test()
             Dim MyRange As Object
             Set MyRange = Range("[Book1]Sheet1!A1:B2")
             MyRange.Resize(, 3).Select
          End Sub

Method 2: Use the Count property and the Rows method to determine the
          number of rows that the current range contains, and use this
          value as the rowSize argument in the Resize method. Use this
          method if you don't want to change the number of rows in the
          range, and you don't know how many rows are contained in the
          range:

          Sub Test()
              Dim MyRange As Range
              Set MyRange = Range("[Book1]Sheet1!A1:B2")
              MyRange.Resize(MyRange.Rows.Count, 3).Select
          End Sub

Microsoft provides examples of Visual Basic procedures 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 Visual Basic procedure is provided 'as is' and Microsoft does not guarantee that it can be used in all situations. Microsoft does not support modifications of this procedure to suit customer requirements for a particular purpose.

MORE INFORMATION

You can use the Resize method in a Visual Basic procedure to resize a range. This method has two arguments, rowSize and columnSize. The Visual Basic Reference indicates that both arguments are optional, and that the new range will keep the same number of rows or columns if you omit one of the arguments. However, when you resize a range that is defined as a Range Object data type, you receive an error message if you omit the rowSize argument.

REFERENCES

For more information about the Resize Method, choose the Search button in the Visual Basic Reference and type:

   Resize Method


KBCategory: kbprg kberrmsg
KBSubcategory:

Additional reference words: 1.00 5.00 5.00c



THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: September 12, 1996
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.