Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

How to make First letter of the cell in capital letter

70 views
Skip to first unread message

Irshad Alam

unread,
Sep 3, 2008, 5:01:01 AM9/3/08
to
I have a sheet in which there are text matters.

I want to run a code, so that all the cells of the worksheet can be effected
to change the first letter of the cell into capital.

I was able to know with the web helps examples, by that I can do it manually
with the cell reference one by one. the formula is as below :

=CONCATENATE(UPPER(LEFT(A1,1)),LOWER(RIGHT(A1,LEN(A1)-1)))

But I want to run in a code for the complete sheet, so once I run the code
and it can be effective for all the sheet

pls. advice

Irshad

Bob Phillips

unread,
Sep 3, 2008, 5:10:28 AM9/3/08
to
Dim cell As Range

For Each cell In ActiveSheet.UsedRange

If cell.Value <> "" Then

cell.Value = UCase(Left(cell.Value, 1)) & Right(cell.Value,
Len(cell.Value) - 1)
End If
Next cell


--
__________________________________
HTH

Bob

"Irshad Alam" <Irsha...@discussions.microsoft.com> wrote in message
news:398F6207-6B88-4BAF...@microsoft.com...

Stefi

unread,
Sep 3, 2008, 6:12:07 AM9/3/08
to
Why not

cell.Value = WorksheetFunction.Proper(cell.Value)

Stefi


„Bob Phillips” ezt írta:

Bob Phillips

unread,
Sep 3, 2008, 7:50:39 AM9/3/08
to
Partly because I would rather not call out to worksheet functions when
there is no need to, and partly because it doesn't do what the OP asks for.

--
__________________________________
HTH

Bob

"Stefi" <St...@discussions.microsoft.com> wrote in message
news:5ADB9D64-44A5-49A9...@microsoft.com...

Stefi

unread,
Sep 3, 2008, 8:10:01 AM9/3/08
to
Hi Bob,

Please explain disadvantages of calling worksheet functions when also other
means are available.

What is the difference between the two ways of changing the first letter to
capitals?

Thanks,

Roger Govier

unread,
Sep 3, 2008, 8:09:33 AM9/3/08
to
Hi Bob

Not sure in what way the Proper function doesn't achieve what the OP
requests.

--
Regards
Roger Govier

"Bob Phillips" <Bob...@somewhere.com> wrote in message
news:uCN#NtbDJH...@TK2MSFTNGP05.phx.gbl...

Dave Peterson

unread,
Sep 3, 2008, 8:31:19 AM9/3/08
to
If The User Wants Every Word To Have Its First Letter Uppercase, Then Proper
Would Work.

But if the user wants just the first letter in the cell uppercase, then maybe
not.

But I'd have used:

cell.Value = UCase(Left(cell.Value, 1)) _
& lcase(Right(cell.Value, Len(cell.Value) - 1))

or

cell.Value = UCase(Left(cell.Value, 1)) & lcase(mid(cell.Value, 2)

to match the sample worksheet function the OP gave.

--

Dave Peterson

Dave Peterson

unread,
Sep 3, 2008, 8:34:15 AM9/3/08
to
Calling worksheet functions instead of staying inside of VBA is usually
(always???) slower.

And there's a difference if there are are multiple words in the cell.

And as well as ucase() and lcase(), VBA has its own strconv(), too.

--

Dave Peterson

JP

unread,
Sep 3, 2008, 8:55:46 AM9/3/08
to
To add to what Dave said, if you are going to use a VBA solution, the
less worksheet calls, the better, because VBA has to do some behind-
the-scenes work to actually interface with Excel. It's not the fastest
way to do things. You want to limit your worksheet calls as much as
possible (when appropriate) to the times when you are reading data, or
writing data back to the worksheet.

--JP

> > >> "Irshad Alam" <IrshadA...@discussions.microsoft.com> wrote in message

Bob Phillips

unread,
Sep 3, 2008, 9:14:50 AM9/3/08
to
Because he/she asked for the first letter, not the first letter of every
word.

--
__________________________________
HTH

Bob

"Roger Govier" <roger@technology4unospamdotcodotuk> wrote in message
news:7DA4D44D-ACF6-48B6...@microsoft.com...

Bob Phillips

unread,
Sep 3, 2008, 9:18:45 AM9/3/08
to
As has been mentioned, there is an overhead to calling a worksheetfunction,
as you are calling out to Excel. That means all of the appropriate
information is passed to Excel (via the inefficient COM inerface?) and then
Excel has to do the function (which is probably very quick), and then Excel
has to pass it back via the same channel. This process is costly, and whilst
acceptable for one or tow instances, in a loop it doesn't sound like a good
idea to me.

The OP also said that they wanted to change the first letter of the cell,
not the first letter of every word in the cell as Proper would do.

--
__________________________________
HTH

Bob

"Stefi" <St...@discussions.microsoft.com> wrote in message

news:5813079D-9FEC-48E6...@microsoft.com...

Roger Govier

unread,
Sep 3, 2008, 5:51:45 PM9/3/08
to
Absolutely right, Bob. I hadn't thought of he cells possibly containing
multiple words.

--
Regards
Roger Govier

"Bob Phillips" <Bob...@somewhere.com> wrote in message

news:e2rBRccD...@TK2MSFTNGP04.phx.gbl...

Irshad Alam

unread,
Sep 4, 2008, 1:18:01 AM9/4/08
to
Sir,
I have checked the VB code you advised(the above first reply), it is not
same what i require, it is making the all the capital to all the first word
of that cell-

The code you advised was :


Dim cell As Range
For Each cell In ActiveSheet.UsedRange
If cell.Value <> "" Then
cell.Value = UCase(Left(cell.Value, 1)) & Right(cell.Value,
Len(cell.Value) - 1)
End If
Next cell

Please note that my requirement is to make only the first word first letter
capital only
Exactly the result which this formula gives

=CONCATENATE(UPPER(LEFT(A1,1)),LOWER(RIGHT(A1,LEN(A1)-1)))

My requirement is exactly the result of the above formula BUt for all the
sheet.

Regards

Irshad

Stefi

unread,
Sep 4, 2008, 2:46:02 AM9/4/08
to
Thank all of you for the detailed explanation!

Bob Phillips

unread,
Sep 4, 2008, 3:30:02 AM9/4/08
to
Sorry, but it just doesn't do that, something else must be happening.

--
__________________________________
HTH

Bob

"Irshad Alam" <Irsha...@discussions.microsoft.com> wrote in message

news:CAC1A9F2-CAEC-4B9C...@microsoft.com...

Dave Peterson

unread,
Sep 4, 2008, 8:01:39 AM9/4/08
to
I'd use:
cell.Value = UCase(Left(cell.Value, 1)) & lcase(mid(cell.Value, 2)

--

Dave Peterson

Irshad Alam

unread,
Sep 7, 2008, 1:03:01 AM9/7/08
to
sorry for late reply, was out.

I have re-checked my above posting works fine, the same type in Microsoft
word if you start a sentence by typing small letters, when you move to next
line pressing enter, it automatically makes the first letter of the sentence
capital.

Exactly this is my requirement which I am able to solve by the indiviual
cell by this formula:

=CONCATENATE(UPPER(LEFT(A1,1)),LOWER(RIGHT(A1,LEN(A1)-1)))

But I want a vba, so that once I run, it will work for the complete
selection for making all the cells first letter (of first word) into capital.

Gord Dibben

unread,
Sep 7, 2008, 11:14:18 AM9/7/08
to
You want it to occur when you hit ENTER key use this event code adapted from
Bob's code.

Private Sub Worksheet_Change(ByVal Target As Range)
Const WS_RANGE As String = "A1:A10" 'adjust to suit
Dim cell As Range
On Error GoTo ws_exit:
Application.EnableEvents = False
If Not Intersect(Target, Me.Range(WS_RANGE)) Is Nothing Then
For Each cell In Target
If cell.Value <> "" Then
cell.Value = UCase(Left(cell.Value, 1)) & Right(cell.Value, _


Len(cell.Value) - 1)
End If
Next cell

End If
ws_exit:
Application.EnableEvents = True
End Sub

This is sheet event code. Right-click on the sheet tab and "View Code"

Copy/paste into that sheet module. Edit to suit the range.

Alt + q to return to the Excel window.


Gord Dibben MS Excel MVP

0 new messages