You are here:

Excel/Subscript out of range error


I have a macro what was written in excel 97-2003. I am trying to convert the macro to excel 2007 so it will be ready when we get 2010 deployed.  After I have converted and then run the macro I get a run-time error 9 "subscript out of range.  This is the code which is highlighted:

Sub ProcessData()
If Mid(Workbooks("Exp_Func_p33_p3c.xls").Sheets(1).Cells(1, 1), 79, 9) <> _
Mid(Workbooks("Clean Up Exp_Func_p33_p3c Main Option.xlsm").Sheets(1).Cells(1, 1), 79, 9) Then

If Sheets("LABOR").Cells(1, 15) <> Sheets("LABOR").Cells(1, 14) _
And Sheets("LABOR").Cells(2, 15) <> Sheets("LABOR").Cells(2, 14) Then

First of all, to my knowledge, there should no need to convert since VBA has essentially remained unchanged.

Do the files still exist?  Are the file names valid?  Do the sheet names still exist?

Try using the full path for Exp_Func_p33_p3c.xls and Clean Up Exp_Func_p33_p3c Main Option.xlsm though I doubt that will make a difference.

Also I suggest using variables, assign the values to the variables and then use the variables in your IF's.  I think it will be easier to read.


Dim X as 'whatever type of data
Dim y as 'whatever type of data
X = Mid(Workbooks("Exp_Func_p33_p3c.xls").Sheets(1).Cells(1, 1), 79, 9)
Y = Mid(Workbooks("Clean Up Exp_Func_p33_p3c Main Option.xlsm").Sheets(1).Cells(1, 1), 79, 9)

If X <> Y then
About Excel
This topic answers questions related to Microsoft Excel spreadsheet (or workbook) stand-alone or Mircrosoft Office Excel including Excel 2003, Excel 2007, Office 2000, and Office XP. You can get Excel help on Excel formulas(or functions), Excell macros, charting in Excel, advanced features, and the general use of Excel. This does not provide a general Excel tutorial nor the basics of using a spreadsheet. It provides specific answers to using Microsoft Excel only. If you do not see your Excel question answered in this area then please ask an Excel question here


All Answers

Answers by Expert:

Ask Experts




I can provide help with most all EXCEL questions and most all questions about writing EXCEL macros. I have been developing macros for about 10 years in EXCEL and have switched to it from Lotus 1-2-3 after about 10 years of writing macros in it. Typically, I will not write a macro for you unless it is very short because of all the details a macro has to know about to work every time and all the time are rarely provided. If I am not given ALL the details, circumstances, and situations then a "good" macro can not be written. Please understand that I do not know it all and will be the first to say so. As politely as possible, I don't write macros for people on this site who need one, want one, seem to imply that they need one, and/or seem to think I am expected to write one UNLESS they are very short, quick, and simple. 99% of all macros are more involved than what you think and rarely am I provided with enough specific and complete details to have the code work the first time and every time. This typically means too many follow-up emails, and subsequent macro changes due to lack of specific details, just to get those details so that the macro would work, all of which is on my own free time. The voice of experience from responding to many questions from people who ask me to write a macro for them from this site tells me this. I don't mean to come across as unhelpful but macros are usually very specific and without ALL of the specifics the macro I would write will not address all of your needs and the layout, location, formatting, conditions, etc. of your data and any related files the macro would have to work with. What seems like a simple task to you is almost always more involved than what you think to have the macro ALWAYS work in EVERY situation. If you have a macro you have already written and have a question about it then perhaps I could help with that. I am sure and hope you can and do understand.

©2017 All rights reserved.