Mike H said:
Worksheet change perhaps,
Right click sheet tab view code and psate this in
Private Sub Worksheet_Change(ByVal Target As Range)
If IsEmpty(Target) Then Exit Sub
Application.EnableEvents = False
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then 'change to suit
Target = UCase(Target)
Application.EnableEvents = True
End If
End Sub
....
This is the most poorly written VBA code I've seen in a while.
The first time an entry were made outside of A1:A10 the statement
Application.EnableEvents = False
would run but not the one resetting this to TRUE, so once the user made an
entry outside of A1:A10, event handlers would be effectively disabled.
Second, there'd be runtime errors if users paste (or even enter using
[Ctrl]+[Enter]) into multiple adjacent cells. When transforming cell
contents or values, you have to iterate through each cell. If you didn't
know that Change events might have to handle multiple cell entries, you
shouldn't be trying to Change event handler code.
This should be
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, r As Range, ac As Variant
If IsEmpty(Target) Then Exit Sub
On Error GoTo CleanUp
Application.EnableEvents = False
ac = Application.Calculation
Application.Calculation = xlCalculationManual
Set r = Intersect(Target, Range("A1:A10")).SpecialCells( _
Type:=xlCellTypeConstants, Value:=xlTextValues)
If Not r Is Nothing Then
For Each c In r
c.Value = UCase(c.Value)
Next c
End If
CleanUp:
Application.EnableEvents = True
Application.Calculation = ac
Application.Calculate
End Sub