Indeed it is. You could try this addin,
http://www.xldynamic.com/source/xld.CFPlus.Download.html
or code like
Private Sub Worksheet_Change(ByVal Target As Range)
Const WS_RANGE As String = "H1:H10" '<== change to suit
On Error GoTo ws_exit
Application.EnableEvents = False
If Not Intersect(Target, Me.Range(WS_RANGE)) Is Nothing Then
With Target
Select Case .Value
Case "Currency": .Offset(0, 1).NumberFormat = "£#,##0.00"
Case "Number": .Offset(0, 1).NumberFormat = "#,##0.00"
Case "Percent": .Offset(0, 1).NumberFormat = "0%"
'wtc
End Select
End With
End If
ws_exit:
Application.EnableEvents = True
End Sub
'This is worksheet event code, which means that it needs to be
'placed in the appropriate worksheet code module, not a standard
'code module. To do this, right-click on the sheet tab, select
'the View Code option from the menu, and paste the code in.
--
---
HTH
Bob
(there's no email, no snail mail, but somewhere should be gmail in my addy)