VBA Help needed -- compile error: object required

A

alexandraVBAgirl

This code always gives me the error above. I have no idea what's wrong with
this
The point is to go through a list of dates and if they are less than say
1/1/2005 (my start date entered in the spreadsheet) change them to 0 and
keep others as is. But this doesn't seem to work at all. Could anyone pls
help me? Thanks

Sub click()

Dim counter As Integer
Dim curCell As Date
Dim startDate As Date
Dim endDate As Date


Range("e1").Value = startDate

For counter = 1 To 20
Set curCell = Worksheets("sheet1").Cells(counter, 3)
If curCell.Value < startDate.Value Then curCell.Value = 0
Next counter
End If

End Sub
 
B

Bob Phillips

This compiled for me

Sub click()

Dim counter As Integer
Dim curCell As Date
Dim startDate As Date
Dim endDate As Date


Range("e1").Value = startDate

For counter = 1 To 20
curCell = Worksheets("sheet1").Cells(counter, 3)
If curCell < startDate Then curCell = 0
Next counter

End Sub


--
HTH

Bob Phillips

(remove nothere from email address if mailing direct)
 
A

alexandraVBAgirl

Thanks, Bob, that seems to eliminate the error message. However, the
worksheet's startdate entered as 1/1/2005 initially turns to 12:00:00 AM as i
execute the macro. I got that before as well. Why does that happen?

my worksheet view

1/1/2004 start date 12:00:00 AM
1/2/2004 end date 2/2/2006
1/1/2005
1/2/2005
1/3/2005
1/4/2005
1/5/2005
1/6/2005
1/7/2005
1/8/2005
1/9/2005
1/10/2005
1/11/2005
1/12/2005
1/13/2005
1/14/2005
1/15/2005
1/16/2005
1/17/2005
1/18/2005

Thanks.
 
A

alexandraVBAgirl

but if i change the code slightly the start date and end date stay as entered
on the worksheet, however, nothing turns to zero.

Sub click()

Dim counter As Integer
Dim curCell As Date
Dim startDate As Date
Dim endDate As Date

startDate = Range("e1").Value
endDate = Range("e2").Value

'Range("e1").Value = startDate
'Range("e2").Value = endDate

For counter = 1 To 20
curCell = Worksheets("sheet1").Cells(counter, 3)
If curCell < startDate Then curCell = 0

Next counter

End Sub

worksheet:

1/1/2004 start date 1/1/2006
1/2/2004 end date 2/2/2006
1/1/2005
1/2/2005
1/3/2005
1/4/2005
1/5/2005
1/6/2005
1/7/2005
1/8/2005
1/9/2005
1/10/2005
1/11/2005
1/12/2005
1/13/2005
1/14/2005
1/15/2005
1/16/2005
1/17/2005
1/18/2005
 
B

Bob Phillips

I think you have bad logic

This

Range("e1").Value = startDate

should maybe be

startDate = Range("e1").Value

--
HTH

Bob Phillips

(remove nothere from email address if mailing direct)
 
G

gti_jobert

ok lets try


Code:
--------------------

Dim i%
Dim curCell As Date
Dim startDate As Date
Dim endDate As Date

startDate = Range("e1").Value
endDate = Range("e2").Value

Sheets("sheet1").Select

i = 1
Do

curCell = Cells(i, 3).Value
If curCell < startDate Then
Cells(i, 3).Value = 0
end if
i = i + 1
loop until i = 21

End Sub
 
A

alexandraVBAgirl

Thanks gtì_jobert,
with your code it worked just the way i wanted it to.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top