Get Month name from Date value in cell

C

Chip Dukes

I'm trying to get the month from a date representation as follows ...

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 3 And Target.Cells.Count = 1 Then
Dim strDate As String
strDate = Format(Target.Value, "mmmm")
Range("A20").Value = strDate
Else
Exit Sub
End If

End Sub

The error I am getting is ... "Object Required"

on the ... strDate = Format(Target.Value, "mmmm") ...

line

by which I'm guessing Target.Value is not being seen as a date type ...

Any ideas as to how I could get the month from a value entered into a call
.... the value will always be in the form 5/24/55 ... from which I need the
string "May"

Chip Dukes
(New to Excel programming)
 
J

JLatham

Your code works fine for me with column C formatted as a date. Might try
changing to this code to see if it helps identify the problem for you.

Your code is in the worksheet's code module, isn't it? You can check by
right-clicking the sheet's name tab and choosing [View Code] from the list.
Your code should be visible when the VB Editor opens.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 3 And Target.Cells.Count = 1 Then
Dim strDate As String
If IsDate(Target) Then
strDate = Format(Target.Value, "mmmm")
Range("A20").Value = strDate
Else
MsgBox "Not a date: " & Target.Value
End If
Else
Exit Sub
End If

End Sub
 
B

Barb Reinhardt

Every time you make a change to the worksheet, the worksheet change event is
called. The only problem I see is updated below.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 3 And Target.Cells.Count = 1 Then
Dim strDate As String
strDate = Format(Target.Value, "mmmm")
Application.EnableEvents= False 'Added
Range("A20").Value = strDate
Application.EnableEvents= True 'Added
Else
Exit Sub
End If
 
B

Barb Reinhardt

You may want to test target for a value as well. Or do something like this

if not isempty(target) then

'Do something
end if
 
F

FSt1

hi
i copied your code. when i enter a date in column c (target column), it puts
april in A20 so the code seems to be working fine.
what are you doing to trigger the code??

regards
FSt1
 
J

Joe User

Chip Dukes said:
Any ideas as to how I could get the month from a
value entered into a call ... the value will always be
in the form 5/24/55 ... from which I need the string "May"

The basic paradigm -- strDate = Format(Target.Value, "mmmm") -- works fine
for me, whether Target.Value is a date serial number or even a string
recognized as a date.

But it seems odd to me that you are assigning the result to the same cell --
Range("A20") -- for any single-cell change in column 3.

Not sure if you dumbed down the code fragment in an effort to isolate the
error, or if you are inadvertently executing the Format conversion for
unexpected cells in column 3.

(Even so, I have yet to encounter a situation where that code would result
in an "object required" runtime error. Nonetheless....)

If you are looking for a change in a specific cell, you might change your If
expression to something of the form Target = Range("C1").

If that does not solve the problem, feel free to send your workbook to me.
Send it to joe2004 "at" hotmail.com.

Aside.... It would be prudent to disable events when changing a cell within
an event macro. To wit:

Dim strDate As String
Application.EnableEvents = False
strDate = Format(Target.Value, "mmmm")
Range("A20").Value = strDate
Application.EnableEvents = True

Also, `Else: Exit Sub` is superfluous in your code fragement. Again, not
sure if that's the result of simplifying the example.


----- original message -----
 
R

Rick Rothstein

Others have addressed your main question, I just thought I would mention to
you (and the others out there who weren't aware of it) that VB has a
MonthName function... it takes the month number as its first argument and an
optional Boolean second argument letting you control whether the full or
abbreviated month name it returned. So, the code in the True portion of your
If/Then/Else block could have be this...

Range("A20").Value = MonthName(Month(Target.Value))
 
F

FSt1

and just to add for those who might be interested.
it also has a weekday function.

Range("A20").value = WeekdayName(Weekday(Target.Value)

FSt1
 

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