• Hi All

    Please note that at the Chandoo.org Forums there is Zero Tolerance to Spam

    Post Spam and you Will Be Deleted as a User

    Hui...

  • When starting a new post, to receive a quicker and more targeted answer, Please include a sample file in the initial post.

Macro Error Help Needed

skidragon02

New Member
Hello,

I am trying to use the following macro to simultaneously format a bunch of tabs and running into problems. Can anybody tell me what is going wrong? Thanks in advance for your help!

[pre]
Code:
Sub Column_Widths()
'
' Column_Widths Macro
'
' select the sheets I want
'
'Sheets("767 DE 1-2 Lates").Select
'   ActiveWindow.ScrollWorkbookTabs Sheets:=1
'   ActiveWindow.ScrollWorkbookTabs Sheets:=1
'   ActiveWindow.ScrollWorkbookTabs Sheets:=1
'   ActiveWindow.ScrollWorkbookTabs Sheets:=1
'   ActiveWindow.ScrollWorkbookTabs Sheets:=1
'   ActiveWindow.ScrollWorkbookTabs Sheets:=1
'   ActiveWindow.ScrollWorkbookTabs Sheets:=1
'   ActiveWindow.ScrollWorkbookTabs Sheets:=1
'   ActiveWindow.ScrollWorkbookTabs Sheets:=1
'   ActiveWindow.ScrollWorkbookTabs Sheets:=1
'   ActiveWindow.ScrollWorkbookTabs Sheets:=1
'   ActiveWindow.ScrollWorkbookTabs Position:=xlLast
'   ActiveWindow.ScrollWorkbookTabs Position:=xlLast
'Sheets(Array("Sheet3", "Sheet4", "Sheet5", "Sheet6", "Sheet7", "Sheet8", "Sheet9", "Sheet10", "Sheet11", "Sheet12", "Sheet13", "Sheet14", "Sheet15", "Sheet16", "Sheet17", "Sheet18", "Sheet19", "Sheet20", "Sheet21", "Sheet22", "Sheet23", "Sheet24", "Sheet25", "Sheet26", "Sheet27", "Sheet28", "Sheet29")).Select
Sheets(Array("Sheet3", "Sheet4")).Select
'    Sheets("767 DE 1-2 Lates").Activate
'    Sheets(Array("767-777 DE CG 88-48 Current Del", "767-777 DE CG 88-48 Cum Del")). _
'        Select Replace:=False
' Adjust column sizes
Columns("A:A").ColumnWidth = 5.57
Columns("B:B").ColumnWidth = 11.71
Columns("C:C").ColumnWidth = 8.86
Columns("D:D").ColumnWidth = 8.86
Columns("E:E").ColumnWidth = 9.43
Columns("F:F").ColumnWidth = 2.86
Columns("G:G").ColumnWidth = 17#
Columns("H:H").ColumnWidth = 7.29
Columns("I:I").ColumnWidth = 32#
Columns("J:J").ColumnWidth = 32#
Columns("K:K").ColumnWidth = 16.29
Columns("L:L").ColumnWidth = 7.71
Columns("M:M").ColumnWidth = 10.29
Columns("N:N").ColumnWidth = 4.86
Columns("O:O").ColumnWidth = 7.14
Columns("P:P").ColumnWidth = 4.86
Columns("Q:Q").ColumnWidth = 6.29
Columns("R:R").ColumnWidth = 5.57
Rows("3:103").EntireRow.AutoFit
End Sub
[/pre]
 
You had a lot of commented lines in your macro which I've removed for clarity. I believe the structure of this macro is what you're looking for.

[pre]
Code:
Sub Column_Widths()

Dim ws As Worksheet
Application.ScreenUpdating = False
For Each ws In Sheets(Array("Sheet3", "Sheet4"))
With ws
.Columns("A:A").ColumnWidth = 5.57
.Columns("B:B").ColumnWidth = 11.71
.Columns("C:C").ColumnWidth = 8.86
.Columns("D:D").ColumnWidth = 8.86
.Columns("E:E").ColumnWidth = 9.43
.Columns("F:F").ColumnWidth = 2.86
.Columns("G:G").ColumnWidth = 17#
.Columns("H:H").ColumnWidth = 7.29
.Columns("I:I").ColumnWidth = 32#
.Columns("J:J").ColumnWidth = 32#
.Columns("K:K").ColumnWidth = 16.29
.Columns("L:L").ColumnWidth = 7.71
.Columns("M:M").ColumnWidth = 10.29
.Columns("N:N").ColumnWidth = 4.86
.Columns("O:O").ColumnWidth = 7.14
.Columns("P:P").ColumnWidth = 4.86
.Columns("Q:Q").ColumnWidth = 6.29
.Columns("R:R").ColumnWidth = 5.57
.Rows("3:103").EntireRow.AutoFit
End With
Next ws
Application.ScreenUpdating = True
End Sub
[/pre]
 
I need sheets 3-29, so I wrote it like this after your suggestion:


Sub Column_Widths()


Dim ws As Worksheet

Application.ScreenUpdating = False

For Each ws In Sheets(Array("Sheet3", "Sheet4", "Sheet5", "Sheet6", "Sheet7", "Sheet8", "Sheet9", "Sheet10", "Sheet11", "Sheet12", "Sheet13", "Sheet14", "Sheet15", "Sheet16", "Sheet17", "Sheet18", "Sheet19", "Sheet20", "Sheet21", "Sheet22", "Sheet23", "Sheet24", "Sheet25", "Sheet26", "Sheet27", "Sheet28", "Sheet29"))

ws.Select

Columns("A:A").ColumnWidth = 5.57

Columns("B:B").ColumnWidth = 11.71

Columns("C:C").ColumnWidth = 8.86

Columns("D:D").ColumnWidth = 8.86

Columns("E:E").ColumnWidth = 9.43

Columns("F:F").ColumnWidth = 2.86

Columns("G:G").ColumnWidth = 17#

Columns("H:H").ColumnWidth = 7.29

Columns("I:I").ColumnWidth = 32#

Columns("J:J").ColumnWidth = 32#

Columns("K:K").ColumnWidth = 16.29

Columns("L:L").ColumnWidth = 7.71

Columns("M:M").ColumnWidth = 10.29

Columns("N:N").ColumnWidth = 4.86

Columns("O:O").ColumnWidth = 7.14

Columns("P:p").ColumnWidth = 4.86

Columns("Q:Q").ColumnWidth = 6.29

Columns("R:R").ColumnWidth = 5.57

Rows("3:103").EntireRow.AutoFit

Next ws

Application.ScreenUpdating = True

End Sub


Now it says, "Run-time error '9': Subscript out of range"...
 
Can you tell us what line gave you that error? All the error tells me is that it tried to select something that's not available. All of your sheets actually exist? If so, one way to eliminate possible human error is to not type out all the sheets, like so:

[pre]
Code:
Sub Column_Widths()

Dim ws As Worksheet
Application.ScreenUpdating = False
For i = 3 To 29
With Worksheets("Sheet" & i)
.Columns("A:A").ColumnWidth = 5.57
.Columns("B:B").ColumnWidth = 11.71
.Columns("C:C").ColumnWidth = 8.86
.Columns("D:D").ColumnWidth = 8.86
.Columns("E:E").ColumnWidth = 9.43
.Columns("F:F").ColumnWidth = 2.86
.Columns("G:G").ColumnWidth = 17#
.Columns("H:H").ColumnWidth = 7.29
.Columns("I:I").ColumnWidth = 32#
.Columns("J:J").ColumnWidth = 32#
.Columns("K:K").ColumnWidth = 16.29
.Columns("L:L").ColumnWidth = 7.71
.Columns("M:M").ColumnWidth = 10.29
.Columns("N:N").ColumnWidth = 4.86
.Columns("O:O").ColumnWidth = 7.14
.Columns("P:P").ColumnWidth = 4.86
.Columns("Q:Q").ColumnWidth = 6.29
.Columns("R:R").ColumnWidth = 5.57
.Rows("3:103").EntireRow.AutoFit
End With
Next ws
Application.ScreenUpdating = True
End Sub
[/pre]
 
Oops, forgot to change the last line. My apologies. Need to chang the "Next ws" to just "Next".

[pre]
Code:
Sub Column_Widths()

Dim ws As Worksheet
Application.ScreenUpdating = False
For i = 3 To 29
With Worksheets("Sheet" & i)
.Columns("A:A").ColumnWidth = 5.57
.Columns("B:B").ColumnWidth = 11.71
.Columns("C:C").ColumnWidth = 8.86
.Columns("D:D").ColumnWidth = 8.86
.Columns("E:E").ColumnWidth = 9.43
.Columns("F:F").ColumnWidth = 2.86
.Columns("G:G").ColumnWidth = 17#
.Columns("H:H").ColumnWidth = 7.29
.Columns("I:I").ColumnWidth = 32#
.Columns("J:J").ColumnWidth = 32#
.Columns("K:K").ColumnWidth = 16.29
.Columns("L:L").ColumnWidth = 7.71
.Columns("M:M").ColumnWidth = 10.29
.Columns("N:N").ColumnWidth = 4.86
.Columns("O:O").ColumnWidth = 7.14
.Columns("P:P").ColumnWidth = 4.86
.Columns("Q:Q").ColumnWidth = 6.29
.Columns("R:R").ColumnWidth = 5.57
.Rows("3:103").EntireRow.AutoFit
End With
Next
Application.ScreenUpdating = True
End Sub
[/pre]
 
Solution Found!

[pre]
Code:
Sub Column_Widths()

Dim ws As Worksheet
Application.ScreenUpdating = False
For i = 3 To 29
With Sheets(i)
.Columns("A:A").ColumnWidth = 5.57
.Columns("B:B").ColumnWidth = 11.71
.Columns("C:C").ColumnWidth = 8.86
.Columns("D:D").ColumnWidth = 8.86
.Columns("E:E").ColumnWidth = 9.43
.Columns("F:F").ColumnWidth = 2.86
.Columns("G:G").ColumnWidth = 17#
.Columns("H:H").ColumnWidth = 7.29
.Columns("I:I").ColumnWidth = 32#
.Columns("J:J").ColumnWidth = 32#
.Columns("K:K").ColumnWidth = 16.29
.Columns("L:L").ColumnWidth = 7.71
.Columns("M:M").ColumnWidth = 10.29
.Columns("N:N").ColumnWidth = 4.86
.Columns("O:O").ColumnWidth = 7.14
.Columns("P:P").ColumnWidth = 4.86
.Columns("Q:Q").ColumnWidth = 6.29
.Columns("R:R").ColumnWidth = 5.57
.Rows("3:103").EntireRow.AutoFit
End With
Next
Application.ScreenUpdating = True
End Sub
[/pre]
 
Back
Top