PC Review


Reply
Thread Tools Rate Thread

1004 Run-Time Error

 
 
Satish
Guest
Posts: n/a
 
      10th Jul 2009
Hi,

I have been at my wits end with this strange problem. I keep getting
a 1004 run-time error for the following piece of code although I dont
see anything wrong in the way I've written it.

I need to get the number of filled rows in both sheets 1 and 2. I am
running this macro on a command button in Sheet2. And the error
occurs at the line row_count1 = Worksheets(1).Range(Cells(1, 1), Cells
(1, 1).End(xlDown)).Rows.Count

If I skip that line, the row_count2 line executes perfectly fine. Both
the statements are very similar, yet I get the error.
Can someone please suggest some solutions?

Dim row_count1 As Integer
Dim row_count2 As Integer
Dim split_text() As String
Dim x As Integer
Dim No_Of_Elements As Integer

Worksheets(1).Activate
row_count1 = Worksheets(1).Range(Cells(1, 1), Cells(1, 1).End
(xlDown)).Rows.Count
Worksheets(2).Activate
row_count2 = Worksheets(2).Range(Cells(3, 1), Cells(3, 1).End
(xlDown)).Rows.Count

Thanks,
Satish
 
Reply With Quote
 
 
 
 
Barb Reinhardt
Guest
Posts: n/a
 
      10th Jul 2009

Try redomensioning Row_Count1 and 2 as Long and see if that helps.

"Satish" wrote:

> Hi,
>
> I have been at my wits end with this strange problem. I keep getting
> a 1004 run-time error for the following piece of code although I dont
> see anything wrong in the way I've written it.
>
> I need to get the number of filled rows in both sheets 1 and 2. I am
> running this macro on a command button in Sheet2. And the error
> occurs at the line row_count1 = Worksheets(1).Range(Cells(1, 1), Cells
> (1, 1).End(xlDown)).Rows.Count
>
> If I skip that line, the row_count2 line executes perfectly fine. Both
> the statements are very similar, yet I get the error.
> Can someone please suggest some solutions?
>
> Dim row_count1 As Integer
> Dim row_count2 As Integer
> Dim split_text() As String
> Dim x As Integer
> Dim No_Of_Elements As Integer
>
> Worksheets(1).Activate
> row_count1 = Worksheets(1).Range(Cells(1, 1), Cells(1, 1).End
> (xlDown)).Rows.Count
> Worksheets(2).Activate
> row_count2 = Worksheets(2).Range(Cells(3, 1), Cells(3, 1).End
> (xlDown)).Rows.Count
>
> Thanks,
> Satish
>

 
Reply With Quote
 
Dave Peterson
Guest
Posts: n/a
 
      10th Jul 2009

If the code is behind a worksheet (not in a General module), then this kind of
expression:
Worksheets(1).Range(Cells(1, 1), Cells(1, 1).end(xldown))


is equivalent to:
Worksheets(1).Range(sheetwithcode.Cells(1, 1), sheetwithcode.Cells(1, 1))...

And if worksheets(1) isn't the same as the sheet with the code, you'll get an
error.

Dim row_count1 As Long
Dim row_count2 As Long
Dim split_text() As String
Dim x As Long
Dim No_Of_Elements As Long

'there's no real reason to activate the sheet first
with worksheets(1)
row_count1 = .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)).Cells.Count
end with

with Worksheets(2)
row_count2 = .Range(.Cells(3, 1), .Cells(3, 1).End(xlDown)).Cells.Count
end with

Those leading dots mean that those objects/properties belong to the object in
the previous With statement. In this case Worksheets(1) and worksheets(2).

I changed your Integer's to Long's and .rows.count to .cells.count. It
shouldn't matter in this case, but it could change the count depending on what
your range is (multiple areas, overlapping rows, ...).







Satish wrote:
>
> Hi,
>
> I have been at my wits end with this strange problem. I keep getting
> a 1004 run-time error for the following piece of code although I dont
> see anything wrong in the way I've written it.
>
> I need to get the number of filled rows in both sheets 1 and 2. I am
> running this macro on a command button in Sheet2. And the error
> occurs at the line row_count1 = Worksheets(1).Range(Cells(1, 1), Cells
> (1, 1).End(xlDown)).Rows.Count
>
> If I skip that line, the row_count2 line executes perfectly fine. Both
> the statements are very similar, yet I get the error.
> Can someone please suggest some solutions?
>
> Dim row_count1 As Integer
> Dim row_count2 As Integer
> Dim split_text() As String
> Dim x As Integer
> Dim No_Of_Elements As Integer
>
> Worksheets(1).Activate
> row_count1 = Worksheets(1).Range(Cells(1, 1), Cells(1, 1).End
> (xlDown)).Rows.Count
> Worksheets(2).Activate
> row_count2 = Worksheets(2).Range(Cells(3, 1), Cells(3, 1).End
> (xlDown)).Rows.Count
>
> Thanks,
> Satish


--

Dave Peterson
 
Reply With Quote
 
Satish
Guest
Posts: n/a
 
      13th Jul 2009
On Jul 10, 7:54*pm, Dave Peterson <peter...@verizonXSPAM.net> wrote:
> If the code is behind a worksheet (not in a General module), then this kind of
> expression:
> Worksheets(1).Range(Cells(1, 1), Cells(1, 1).end(xldown))
>
> is equivalent to:
> Worksheets(1).Range(sheetwithcode.Cells(1, 1), sheetwithcode.Cells(1, 1))....
>
> And if worksheets(1) isn't the same as the sheet with the code, you'll get an
> error.
>
> * *Dim row_count1 As Long
> * *Dim row_count2 As Long
> * *Dim split_text() As String
> * *Dim x As Long
> * *Dim No_Of_Elements As Long
>
> * *'there's no real reason to activate the sheet first
> * *with worksheets(1)
> * * row_count1 = .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)).Cells.Count
> * *end with
>
> * *with Worksheets(2)
> * * row_count2 = .Range(.Cells(3, 1), .Cells(3, 1).End(xlDown)).Cells.Count
> * *end with
>
> Those leading dots mean that those objects/properties belong to the object in
> the previous With statement. *In this case Worksheets(1) and worksheets(2).
>
> I changed your Integer's to Long's and .rows.count to .cells.count. *It
> shouldn't matter in this case, but it could change the count depending onwhat
> your range is (multiple areas, overlapping rows, ...).
>
>
>
>
>
> Satish wrote:
>
> > Hi,

>
> > I have been at my wits end with this strange problem. *I keep getting
> > a 1004 run-time error for the following piece of code although I dont
> > see anything wrong in the way I've written it.

>
> > I need to get the number of filled rows in both sheets 1 and 2. *I am
> > running this macro on a command button in Sheet2. *And the error
> > occurs at the line row_count1 = Worksheets(1).Range(Cells(1, 1), Cells
> > (1, 1).End(xlDown)).Rows.Count

>
> > If I skip that line, the row_count2 line executes perfectly fine. Both
> > the statements are very similar, yet I get the error. *
> > Can someone please suggest some solutions?

>
> > * *Dim row_count1 As Integer
> > * *Dim row_count2 As Integer
> > * *Dim split_text() As String
> > * *Dim x As Integer
> > * *Dim No_Of_Elements As Integer

>
> > * * Worksheets(1).Activate
> > * * row_count1 = Worksheets(1).Range(Cells(1, 1), Cells(1, 1).End
> > (xlDown)).Rows.Count
> > * * Worksheets(2).Activate
> > * * row_count2 = Worksheets(2).Range(Cells(3, 1), Cells(3, 1).End
> > (xlDown)).Rows.Count

>
> > Thanks,
> > Satish

>
> --
>
> Dave Peterson- Hide quoted text -
>
> - Show quoted text -


Thanks a ton! Your solution worked like a charm.

regards,
Satish
 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

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


Similar Threads
Thread Thread Starter Forum Replies Last Post
Run-Time Error '1004' mcbarker Microsoft Excel Programming 13 2nd Apr 2009 12:57 AM
run-time error 1004 Larue Microsoft Excel Crashes 1 7th Jul 2008 07:48 PM
run-time error '1004' chum Microsoft Excel Programming 0 7th Jul 2006 03:18 PM
Run-time error 1004 dthmtlgod Microsoft Excel Programming 1 12th Jan 2006 03:40 PM
Run-time error '1004' Dkline Microsoft Excel Misc 1 2nd Jul 2004 01:18 AM


Features
 

Advertising
 

Newsgroups
 


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