ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Help with this error Unknown reason for error with Range().Select (https://www.excelbanter.com/excel-programming/339912-help-error-unknown-reason-error-range-select.html)

Brad Sumner

Help with this error Unknown reason for error with Range().Select
 
Here is my code. The error happens when the sheet is changed and it selects
the starting cell for Movie1 sheet. The error says "Select Method of Range
Class failed". I have never ran into this problem before. If anyone has any
ideas on other ways to accomplish what I am trying to do I am open to any
suggestions

'Day is row to place info in
'Movie is the name of the movie for that time
'PCount is the Performance Count for that time
Dim Day As Integer
Dim PCount(9 To 22) As Integer
Dim Movie(9 To 22) As Integer
Dim X As Integer

Private Sub cmdApply_Click()
Worksheets("Main").Activate
Range("A3").Select
If ActiveCell.Value = "" Then GoTo E
Day = ActiveCell.Value

For X = 9 To 22
Range("C5").Select
Movie(X) = ActiveCell.Value
ActiveCell.Offset(0, 2).Select
Next X

For X = 9 To 22
Range("C3").Select
PCount(X) = ActiveCell.Value
ActiveCell.Offset(0, 2).Select
Next X

Worksheets("Movie1").Activate
Range("C3").Select
ActiveCell.Offset(Day, 0).Select
For X = 9 To 22
If X = Movie(X) Then
ActiveCell.Value = PCount(X)
Else
ActiveCell.Value = 0
End If
ActiveCell.Offset(0, 2).Select
Next X

Worksheets("Movie2").Activate
Range("C3").Select
ActiveCell.Offset(Day, 0).Select
For X = 9 To 22
If X = Movie(X) Then
ActiveCell.Value = PCount(X)
Else
ActiveCell.Value = 0
End If
ActiveCell.Offset(0, 2).Select
Next X

Worksheets("Movie3").Activate
Range("C3").Select
ActiveCell.Offset(Day, 0).Select
For X = 9 To 22
If X = Movie(X) Then
ActiveCell.Value = PCount(X)
Else
ActiveCell.Value = 0
End If
ActiveCell.Offset(0, 2).Select
Next X

Worksheets("Movie4").Activate
Range("C3").Select
ActiveCell.Offset(Day, 0).Select
For X = 9 To 22
If X = Movie(X) Then
ActiveCell.Value = PCount(X)
Else
ActiveCell.Value = 0
End If
ActiveCell.Offset(0, 2).Select
Next X

E: End Sub


Norman Jones

Help with this error Unknown reason for error with Range().Select
 
Hi Brad,

Since your code resides in a sheet module, any unqualified range reference
will be interpreted as referring to the sheet which holds the code and not
to the active sheet.

Since a range cannot be selected on an inactive sheet,

a line like:

Range("A3").Select


will cause an error if the active sheet is not the sheet holding the code.

The solution is fully to qualify each range reference with the parent sheet,
i.e.:

Worksheets("Main").Range("A3")

Additionally, whilst your code activates various sheets and selects various
ranges, such physical selections are unnecessary and inefficient. For
example, instead of:

Worksheets("Main").Activate
Range("A3").Select
If ActiveCell.Value = "" Then GoTo E
Day = ActiveCell.Value


You could, without selections use:

With Worksheets("Main")
With .Range("A3")
If .Value = "" Then GoTo E
rw = .Value
End With

(Since Day is a VBA function, I have replaced Day with rw as the variable)

---
Regards,
Norman



"Brad Sumner" wrote in message
...
Here is my code. The error happens when the sheet is changed and it
selects
the starting cell for Movie1 sheet. The error says "Select Method of
Range
Class failed". I have never ran into this problem before. If anyone has
any
ideas on other ways to accomplish what I am trying to do I am open to any
suggestions

'Day is row to place info in
'Movie is the name of the movie for that time
'PCount is the Performance Count for that time
Dim Day As Integer
Dim PCount(9 To 22) As Integer
Dim Movie(9 To 22) As Integer
Dim X As Integer

Private Sub cmdApply_Click()
Worksheets("Main").Activate
Range("A3").Select
If ActiveCell.Value = "" Then GoTo E
Day = ActiveCell.Value

For X = 9 To 22
Range("C5").Select
Movie(X) = ActiveCell.Value
ActiveCell.Offset(0, 2).Select
Next X

For X = 9 To 22
Range("C3").Select
PCount(X) = ActiveCell.Value
ActiveCell.Offset(0, 2).Select
Next X

Worksheets("Movie1").Activate
Range("C3").Select
ActiveCell.Offset(Day, 0).Select
For X = 9 To 22
If X = Movie(X) Then
ActiveCell.Value = PCount(X)
Else
ActiveCell.Value = 0
End If
ActiveCell.Offset(0, 2).Select
Next X

Worksheets("Movie2").Activate
Range("C3").Select
ActiveCell.Offset(Day, 0).Select
For X = 9 To 22
If X = Movie(X) Then
ActiveCell.Value = PCount(X)
Else
ActiveCell.Value = 0
End If
ActiveCell.Offset(0, 2).Select
Next X

Worksheets("Movie3").Activate
Range("C3").Select
ActiveCell.Offset(Day, 0).Select
For X = 9 To 22
If X = Movie(X) Then
ActiveCell.Value = PCount(X)
Else
ActiveCell.Value = 0
End If
ActiveCell.Offset(0, 2).Select
Next X

Worksheets("Movie4").Activate
Range("C3").Select
ActiveCell.Offset(Day, 0).Select
For X = 9 To 22
If X = Movie(X) Then
ActiveCell.Value = PCount(X)
Else
ActiveCell.Value = 0
End If
ActiveCell.Offset(0, 2).Select
Next X

E: End Sub





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

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com