If Then Conditions

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I am trying to write a VBA code that changes the font color of a date if it is a specific month. So far I have been using the If Then function, but everytime I run the macro it changes to the first color in the VBA code and not a different color for every month

Can anyone help me

Thank you

Rudy
 
Hi Rudy
post your code :-)

--
Regards
Frank Kabel
Frankfurt, Germany

Rudy Winter said:
I am trying to write a VBA code that changes the font color of a date
if it is a specific month. So far I have been using the If Then
function, but everytime I run the macro it changes to the first color
in the VBA code and not a different color for every month.
 
Generally, the month function will see a blank cell or a cell with a zero as
January. This might be the root of your problem.

You need to check and make sure the cell isn't blank.

--
Regards,
Tom Ogilvy

Rudy Winter said:
I am trying to write a VBA code that changes the font color of a date if
it is a specific month. So far I have been using the If Then function, but
everytime I run the macro it changes to the first color in the VBA code and
not a different color for every month.
 
It would be simpler to use conditional formatting.

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

Rudy Winter said:
I am trying to write a VBA code that changes the font color of a date if
it is a specific month. So far I have been using the If Then function, but
everytime I run the macro it changes to the first color in the VBA code and
not a different color for every month.
 
This is the macro I used

If Date >= 1 / 1 / 4 <= 1 / 31 / 4 The
Range("A1:G40").Selec
Selection.Font.ColorIndex =
End I
If Date >= 2 / 1 / 4 <= 2 / 29 / 4 The
Range("A1:G40").Selec
Selection.Font.ColorIndex =
End I
If Date >= 3 / 1 / 4 <= 3 / 31 / 4 The
Range("A1:G40").Selec
Selection.Font.ColorIndex =
End I
If Date >= 4 / 1 / 4 <= 4 / 30 / 4 The
Range("A1:G40").Selec
Selection.Font.ColorIndex =
End I
End Sub
 
This is the Macro I used

If Date >= 1 / 1 / 4 <= 1 / 31 / 4 The
Range("A1:G40").Selec
Selection.Font.ColorIndex =
End I
If Date >= 2 / 1 / 4 <= 2 / 29 / 4 The
Range("A1:G40").Selec
Selection.Font.ColorIndex =
End I
If Date >= 3 / 1 / 4 <= 3 / 31 / 4 The
Range("A1:G40").Selec
Selection.Font.ColorIndex =
End I
If Date >= 4 / 1 / 4 <= 4 / 30 / 4 The
Range("A1:G40").Selec
Selection.Font.ColorIndex =
End I
End Sub
 
Excel sees 1/1/4 as 1 divided by 1 = 1, then that 1 divided by 4 = 0.24

A date constant in Excel is expressed as

#1/1/04#

or
#1/1/2004#

also you have to test each condition separately

If Date >= #1/1/2004# and Date <= #1/31/2004# then

however, it is easier to do

if month(date) = 1 then

if you are using a sequential pattern

Range("A1:G40").Interior.ColorIndex = month(Date) + 2
 
Hi Rudy
try the following:
Sub foo()
With Range("A1:G40").Font
Select Case Date
Case DateSerial(2004, 1, 1) To DateSerial(2004, 1, 31)
.ColorIndex = 3
Case DateSerial(2004, 2, 1) To DateSerial(2004, 2, 29)
.ColorIndex = 4
Case DateSerial(2004, 3, 1) To DateSerial(2004, 3, 31)
.ColorIndex = 5
Case DateSerial(2004, 4, 1) To DateSerial(2004, 4, 30)
.ColorIndex = 6
Case DateSerial(2004, 1, 1) To DateSerial(2004, 3, 31)
.ColorIndex = 3
End Select
End With
End Sub
 

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

Back
Top