Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 79
Default method "range" of object "_worksheet" fails

line ** generates the above error. Please advise.


code:
Sub clean()

Dim mtsumc As Range
Dim mtsumn As Range
Dim psumc As Range
Dim psumn As Range


Dim curcell As Range
Dim sht As Worksheet
Dim el1 As Integer
Dim el2 As Integer
Dim c As Integer

Dim P, M As Boolean


For Each sht In ActiveWorkbook.Worksheets

c = sht.UsedRange.Columns.Count

For Each curcell In sht.UsedRange.Columns(2).Cells

el1 = curcell.Row

Select Case Trim(curcell.Offset(0, -1).Value)

Case Is = "Motor"

M = True

Select Case Trim(curcell.Value)

Case Is = "A"
Set mtsumc = sht.Range(Cells(el1, 3), Cells(el1, c))

Case Is = "B"
Set mtsumn = sht.Range(Cells(el1, 3), Cells(el1, c))

Case Is = "A+B"
MsgBox "file already processed"
Exit Sub

End Select

Case Is = "Property"

P = True

Select Case Trim(curcell.Value)

Case Is = "A"
Set psumc = sht.Range(Cells(el1, 3), Cells(el1, c))

Case Is = "B"
Set psumn = sht.Range(Cells(el1, 3), Cells(el1, c))

Case Is = "A+B"
MsgBox "file already processed"
Exit Sub

End Select

End Select
Next curcell



If M = True Then
With sht
..Range("mtsumn").Copy**
..Range("mtsumc").PasteSpecial operation:=xlAdd
End With
Application.CutCopyMode = False
Else: End If

If P = True Then
With sht
..Range("psumn").Copy
..Range("psumc").PasteSpecial operation:=xlAdd
End With
Application.CutCopyMode = False
Else: End If




Next sht
End Sub

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 105
Default method "range" of object "_worksheet" fails

Is "mtsumn" named range defined to the worksheet level or to the
workbook level ? In the second case, you should not use it with a
worksheet.
Regards.
Daniel

line ** generates the above error. Please advise.


code:
Sub clean()

Dim mtsumc As Range
Dim mtsumn As Range
Dim psumc As Range
Dim psumn As Range


Dim curcell As Range
Dim sht As Worksheet
Dim el1 As Integer
Dim el2 As Integer
Dim c As Integer

Dim P, M As Boolean


For Each sht In ActiveWorkbook.Worksheets

c = sht.UsedRange.Columns.Count

For Each curcell In sht.UsedRange.Columns(2).Cells

el1 = curcell.Row

Select Case Trim(curcell.Offset(0, -1).Value)

Case Is = "Motor"

M = True

Select Case Trim(curcell.Value)

Case Is = "A"
Set mtsumc = sht.Range(Cells(el1, 3), Cells(el1, c))

Case Is = "B"
Set mtsumn = sht.Range(Cells(el1, 3), Cells(el1, c))

Case Is = "A+B"
MsgBox "file already processed"
Exit Sub

End Select

Case Is = "Property"

P = True

Select Case Trim(curcell.Value)

Case Is = "A"
Set psumc = sht.Range(Cells(el1, 3), Cells(el1, c))

Case Is = "B"
Set psumn = sht.Range(Cells(el1, 3), Cells(el1, c))

Case Is = "A+B"
MsgBox "file already processed"
Exit Sub

End Select

End Select
Next curcell



If M = True Then
With sht
.Range("mtsumn").Copy**
.Range("mtsumc").PasteSpecial operation:=xlAdd
End With
Application.CutCopyMode = False
Else: End If

If P = True Then
With sht
.Range("psumn").Copy
.Range("psumc").PasteSpecial operation:=xlAdd
End With
Application.CutCopyMode = False
Else: End If




Next sht
End Sub



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 79
Default method "range" of object "_worksheet" fails

my intention is for all the named ranges to be set and used at the sheet
level. What code changes are needed to make this work?

"Daniel.C" wrote:

Is "mtsumn" named range defined to the worksheet level or to the
workbook level ? In the second case, you should not use it with a
worksheet.
Regards.
Daniel

line ** generates the above error. Please advise.


code:
Sub clean()

Dim mtsumc As Range
Dim mtsumn As Range
Dim psumc As Range
Dim psumn As Range


Dim curcell As Range
Dim sht As Worksheet
Dim el1 As Integer
Dim el2 As Integer
Dim c As Integer

Dim P, M As Boolean


For Each sht In ActiveWorkbook.Worksheets

c = sht.UsedRange.Columns.Count

For Each curcell In sht.UsedRange.Columns(2).Cells

el1 = curcell.Row

Select Case Trim(curcell.Offset(0, -1).Value)

Case Is = "Motor"

M = True

Select Case Trim(curcell.Value)

Case Is = "A"
Set mtsumc = sht.Range(Cells(el1, 3), Cells(el1, c))

Case Is = "B"
Set mtsumn = sht.Range(Cells(el1, 3), Cells(el1, c))

Case Is = "A+B"
MsgBox "file already processed"
Exit Sub

End Select

Case Is = "Property"

P = True

Select Case Trim(curcell.Value)

Case Is = "A"
Set psumc = sht.Range(Cells(el1, 3), Cells(el1, c))

Case Is = "B"
Set psumn = sht.Range(Cells(el1, 3), Cells(el1, c))

Case Is = "A+B"
MsgBox "file already processed"
Exit Sub

End Select

End Select
Next curcell



If M = True Then
With sht
.Range("mtsumn").Copy**
.Range("mtsumc").PasteSpecial operation:=xlAdd
End With
Application.CutCopyMode = False
Else: End If

If P = True Then
With sht
.Range("psumn").Copy
.Range("psumc").PasteSpecial operation:=xlAdd
End With
Application.CutCopyMode = False
Else: End If




Next sht
End Sub




  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,718
Default method "range" of object "_worksheet" fails

With sht
..Range("mtsumn").Copy**

If any sheet does not have this local name defined on it you'll get an error
when the macro gets to that sheet.

--
Jim
"PBcorn" wrote in message
...
| line ** generates the above error. Please advise.
|
|
| code:
| Sub clean()
|
| Dim mtsumc As Range
| Dim mtsumn As Range
| Dim psumc As Range
| Dim psumn As Range
|
|
| Dim curcell As Range
| Dim sht As Worksheet
| Dim el1 As Integer
| Dim el2 As Integer
| Dim c As Integer
|
| Dim P, M As Boolean
|
|
| For Each sht In ActiveWorkbook.Worksheets
|
| c = sht.UsedRange.Columns.Count
|
| For Each curcell In sht.UsedRange.Columns(2).Cells
|
| el1 = curcell.Row
|
| Select Case Trim(curcell.Offset(0, -1).Value)
|
| Case Is = "Motor"
|
| M = True
|
| Select Case Trim(curcell.Value)
|
| Case Is = "A"
| Set mtsumc = sht.Range(Cells(el1, 3), Cells(el1, c))
|
| Case Is = "B"
| Set mtsumn = sht.Range(Cells(el1, 3), Cells(el1, c))
|
| Case Is = "A+B"
| MsgBox "file already processed"
| Exit Sub
|
| End Select
|
| Case Is = "Property"
|
| P = True
|
| Select Case Trim(curcell.Value)
|
| Case Is = "A"
| Set psumc = sht.Range(Cells(el1, 3), Cells(el1, c))
|
| Case Is = "B"
| Set psumn = sht.Range(Cells(el1, 3), Cells(el1, c))
|
| Case Is = "A+B"
| MsgBox "file already processed"
| Exit Sub
|
| End Select
|
| End Select
| Next curcell
|
|
|
| If M = True Then
| With sht
| .Range("mtsumn").Copy**
| .Range("mtsumc").PasteSpecial operation:=xlAdd
| End With
| Application.CutCopyMode = False
| Else: End If
|
| If P = True Then
| With sht
| .Range("psumn").Copy
| .Range("psumc").PasteSpecial operation:=xlAdd
| End With
| Application.CutCopyMode = False
| Else: End If
|
|
|
|
| Next sht
| End Sub
|

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 105
Default method "range" of object "_worksheet" fails

Could you post the formula which defines "mtsumn" ?
Daniel

my intention is for all the named ranges to be set and used at the sheet
level. What code changes are needed to make this work?

"Daniel.C" wrote:

Is "mtsumn" named range defined to the worksheet level or to the
workbook level ? In the second case, you should not use it with a
worksheet.
Regards.
Daniel

line ** generates the above error. Please advise.


code:
Sub clean()

Dim mtsumc As Range
Dim mtsumn As Range
Dim psumc As Range
Dim psumn As Range


Dim curcell As Range
Dim sht As Worksheet
Dim el1 As Integer
Dim el2 As Integer
Dim c As Integer

Dim P, M As Boolean


For Each sht In ActiveWorkbook.Worksheets

c = sht.UsedRange.Columns.Count

For Each curcell In sht.UsedRange.Columns(2).Cells

el1 = curcell.Row

Select Case Trim(curcell.Offset(0, -1).Value)

Case Is = "Motor"

M = True

Select Case Trim(curcell.Value)

Case Is = "A"
Set mtsumc = sht.Range(Cells(el1, 3), Cells(el1, c))

Case Is = "B"
Set mtsumn = sht.Range(Cells(el1, 3), Cells(el1, c))

Case Is = "A+B"
MsgBox "file already processed"
Exit Sub

End Select

Case Is = "Property"

P = True

Select Case Trim(curcell.Value)

Case Is = "A"
Set psumc = sht.Range(Cells(el1, 3), Cells(el1, c))

Case Is = "B"
Set psumn = sht.Range(Cells(el1, 3), Cells(el1, c))

Case Is = "A+B"
MsgBox "file already processed"
Exit Sub

End Select

End Select
Next curcell



If M = True Then
With sht
.Range("mtsumn").Copy**
.Range("mtsumc").PasteSpecial operation:=xlAdd
End With
Application.CutCopyMode = False
Else: End If

If P = True Then
With sht
.Range("psumn").Copy
.Range("psumc").PasteSpecial operation:=xlAdd
End With
Application.CutCopyMode = False
Else: End If




Next sht
End Sub








  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 79
Default method "range" of object "_worksheet" fails

ok what am trying to acheive is have the macro cycle through all the sheets
in the workbook and assign new ranges to the named ranges for each sheet,
then use this for operations within the sheet. How can this be done?

"Jim Rech" wrote:

With sht
..Range("mtsumn").Copy**

If any sheet does not have this local name defined on it you'll get an error
when the macro gets to that sheet.

--
Jim
"PBcorn" wrote in message
...
| line ** generates the above error. Please advise.
|
|
| code:
| Sub clean()
|
| Dim mtsumc As Range
| Dim mtsumn As Range
| Dim psumc As Range
| Dim psumn As Range
|
|
| Dim curcell As Range
| Dim sht As Worksheet
| Dim el1 As Integer
| Dim el2 As Integer
| Dim c As Integer
|
| Dim P, M As Boolean
|
|
| For Each sht In ActiveWorkbook.Worksheets
|
| c = sht.UsedRange.Columns.Count
|
| For Each curcell In sht.UsedRange.Columns(2).Cells
|
| el1 = curcell.Row
|
| Select Case Trim(curcell.Offset(0, -1).Value)
|
| Case Is = "Motor"
|
| M = True
|
| Select Case Trim(curcell.Value)
|
| Case Is = "A"
| Set mtsumc = sht.Range(Cells(el1, 3), Cells(el1, c))
|
| Case Is = "B"
| Set mtsumn = sht.Range(Cells(el1, 3), Cells(el1, c))
|
| Case Is = "A+B"
| MsgBox "file already processed"
| Exit Sub
|
| End Select
|
| Case Is = "Property"
|
| P = True
|
| Select Case Trim(curcell.Value)
|
| Case Is = "A"
| Set psumc = sht.Range(Cells(el1, 3), Cells(el1, c))
|
| Case Is = "B"
| Set psumn = sht.Range(Cells(el1, 3), Cells(el1, c))
|
| Case Is = "A+B"
| MsgBox "file already processed"
| Exit Sub
|
| End Select
|
| End Select
| Next curcell
|
|
|
| If M = True Then
| With sht
| .Range("mtsumn").Copy**
| .Range("mtsumc").PasteSpecial operation:=xlAdd
| End With
| Application.CutCopyMode = False
| Else: End If
|
| If P = True Then
| With sht
| .Range("psumn").Copy
| .Range("psumc").PasteSpecial operation:=xlAdd
| End With
| Application.CutCopyMode = False
| Else: End If
|
|
|
|
| Next sht
| End Sub
|


Reply
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
Error Help - Method "Range" of object "_Worksheet" failed. Alan Smith Excel Programming 3 March 15th 07 06:55 PM
Error in Macro: "Method 'Paste' of object '_Worksheet' failed" blork Excel Programming 7 March 5th 06 05:48 PM
What is Error "Method "Paste" of object "_Worksheet" failed? vat Excel Programming 7 February 17th 06 08:05 PM
"method 'Copy' of object '_Worksheet' failed" Terry Holland Excel Programming 1 July 8th 05 04:25 PM
METHOD "SELECT" OF OBJECT '_WORKSHEET' FAILED when opening a file Mat Excel Programming 0 July 8th 04 05:13 PM


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

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

About Us

"It's about Microsoft Excel"