LinkBack Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 64
Default Run-time error '9': Subscript out of range

This macro exports my spread sheet to a fixed with prn file. It works
great if my array is

myColWidths = Array(69, 13, 11, 48, 18, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 26, 127, 64, 71, 1)

But if I change it to:

myColWidths = Array(69, 13, 11, 19, 29, 18, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 26, 127, 135, 1)



To accommodate different column widths I get a Run-time error '9':
Subscript out of range and the code stops he

cellStr = Left(Rng(iRow, iCol).Text & _
Space(myColWidths(iCol)), myColWidths(iCol))


I can’t figure out why. Any help would be great appreciated. My entire
code is as follows:

Sub SaveAsFixedWidthSummitLeh()


Dim Rng As Range
Dim myColWidths As Variant
Dim iCol As Long
Dim iRow As Long
Dim myFileName As Variant
Dim myFileNum
Dim resp As Long
Dim myStr As String
Dim cellStr As String


myColWidths = Array(69, 13, 11, 19, 29, 18, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 26, 127, 135, 1)


With ActiveSheet
Set Rng = .UsedRange 'try to reset last used cell.
Set Rng = Range("a1", .Cells.SpecialCells(xlCellTypeLastCell))
End With



Do
myFileName = Application.GetSaveAsFilename( _
fileFilter:="Prn Files, *.Prn", _
InitialFileName:="SavedFile.Prn", Title:="Save
A Range")


If myFileName = False Then End


If Dir(CStr(myFileName)) < "" Then
resp = MsgBox(Prompt:="Overwrite the existing file?", _
Buttons:=vbCritical + vbYesNoCancel)
Select Case resp
Case Is = vbCancel
MsgBox "Try Later"
Exit Sub
Case Is = vbYes: Exit Do
End Select
Else
Exit Do
End If
Loop


myFileNum = FreeFile()
Close #myFileNum
Open myFileName For Output As #myFileNum


For iRow = 1 To Rng.Rows.Count
If (iRow \ 50) * 50 = iRow Then
Application.StatusBar = "Processing row: " _
& iRow & " at: " & Now
End If
myStr = ""
For iCol = 1 To Rng.Columns.Count
If Application.IsNumber(Rng(iRow, iCol).Value) Then
'right justify the contents
cellStr = Right(Space(myColWidths(iCol)) & _
Rng(iRow, iCol).Text, myColWidths(iCol))
Else
'text is justified to the left??
cellStr = Left(Rng(iRow, iCol).Text & _
Space(myColWidths(iCol)),
myColWidths(iCol))
End If
myStr = myStr & cellStr
Next iCol
Print #myFileNum, myStr
Next iRow


Close #myFileNum
MsgBox "Done at: " & Now


With Application
.StatusBar = False
End With


End Sub


Thanks
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
run-time error '9': subscript out of range [email protected] uk Excel Discussion (Misc queries) 4 December 8th 09 10:27 PM
run time error #9, subscript out of range Jim Thomlinson Excel Programming 0 August 17th 07 02:02 AM
run time error 9, subscript out of range [email protected] Excel Programming 6 July 7th 06 02:35 AM
run time error 9, subscript out of range [email protected] Excel Programming 1 July 7th 06 02:31 AM
Run-time error 9 (Subscript out of range) Lizz45ie[_3_] Excel Programming 3 October 26th 05 11:38 PM


All times are GMT +1. The time now is 03:55 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"