Various subs *borrowed* from others in here.
Sub CAPS1()
'select range and run this to change to all CAPS
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim Cel As Range
For Each Cel In Intersect(Selection, ActiveSheet.UsedRange)
Cel.Formula = UCase$(Cel.Formula)
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Sub CAPS2()
'Just run this and it will affect the whole sheet
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each cell In ActiveSheet.UsedRange
If cell.HasFormula = False Then
cell.Value = UCase(cell.Value)
End If
Next cell
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Sub CAPS3()
'select range and run this to change to all CAPS
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim myCell As Range
Dim myRng As Range
On Error Resume Next
Set myRng = Intersect(Selection, _
Selection.Cells _
.SpecialCells(xlCellTypeConstants, xlTextValues))
On Error GoTo 0
If myRng Is Nothing Then
MsgBox "Please select a range that contains text--no formulas!"
Exit Sub
End If
For Each myCell In myRng.Cells
myCell.Value = StrConv(myCell.Value, vbUpperCase)
Next myCell
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub