Here's an alternative if you require a formula, with your data entry in A1, then this in B1
=LEFT(UPPER(A1),3)&" "&RIGHT(UPPER(A1),3)
Here's an alternative if you require a formula, with your data entry in A1, then this in B1
=LEFT(UPPER(A1),3)&" "&RIGHT(UPPER(A1),3)
oldchippy
-------------
![]()
![]()
Blessed are those who can give without remembering and take without forgetting
If you are happy with the help you have received, please click the <--- STAR icon on the left - Thanks.
Click here >>> Top Excel links for beginners to Experts
Forum Rules >>>Please don't forget to read these
Hi Mudraker,
Thanks again for taking time to help me. I sincerely appreciate it.
When I enter an improperly formatted postal code -- e.g., a1b2c3 -- in cell A1, it gets formatted properly (A1B 2C3) but I get the message: $A$1 - 1 is invalid for Postcode. It happens all the time. Do I need to modify the code?
Thanks,
Gos-C
Using Excel 2010 & Windows 10
"It is better to be prepared for an opportunity and not have one than to have an opportunity and not be prepared."
I should have been a bit more thourgh on the testing before posting the code
![]()
Private Sub Worksheet_Change(ByVal Target As Range) Dim Rng As Range Dim iChar As Integer For Each Rng In Target If Rng.Column = 1 Then Application.EnableEvents = False Select Case Len(Rng.Value) Case 6 Rng.Value = UCase(Left(Rng.Value, 3) & " " & Right(Rng.Value, 3)) Case 7 Rng.Value = UCase(Rng.Value) End Select If Len(Rng.Value) <> 7 Then MsgBox "Invalid Post Code Entyry in " & Rng.Address Exit For End If For iChar = 1 To 7 Step 1 Select Case Mid(Rng.Value, iChar, 1) Case "A" To "Z" Select Case iChar Case 2, 4, 5, 7 MsgBox Rng.Address & " - " & Mid(Rng.Value, iChar, 1) _ & " is invalid for Postcode" 'rng.ClearContents Exit For End Select Case 0 To 9 Select Case iChar Case 1, 3, 4, 6 MsgBox Rng.Address & " - " & Mid(Rng.Value, iChar, 1) _ & " is invalid for Postcode" 'rng.ClearContents Exit For End Select Case " " Select Case iChar Case 1 To 3, 5 To 7 MsgBox Rng.Address & " - " & Mid(Rng.Value, iChar, 1) _ & " is invalid for Postcode" 'rng.ClearContents Exit For End Select Case Else MsgBox Rng.Address & " - " & Mid(Rng.Value, iChar, 1) _ & " is invalid for Postcode" 'rng.ClearContents Exit For End Select Next iChar End If Next Rng Application.EnableEvents = True End Sub
Got it! Mudraker, you're the best! Thanks a million.
Gos-C
Glad to hear all is now working correctly & thanks for the feed back
I beleive this might also helpful if you are entering Postcode in Range 'A1'.
Sub Postal_Verify()
If Len(Range("A1").Text) = 6 And _
IsAlpha(Mid(Range("A1").Text, 1, 1)) = True And _
IsAlpha(Mid(Range("A1").Text, 3, 1)) = True And _
IsAlpha(Mid(Range("A1").Text, 5, 1)) = True And _
IsNumeric(Mid(Range("A1").Text, 2, 1)) = True And _
IsNumeric(Mid(Range("A1").Text, 4, 1)) = True And _
IsNumeric(Mid(Range("A1").Text, 6, 1)) = True Then
Range("A1") = Left(Range("A1"), 3) & " " & Right(Range("A1"), 3)
Else
MsgBox "Invalid Postal Code."
End If
End Sub
Function IsAlpha(chr As String) As Boolean
If Asc(chr) >= 97 And Asc(chr) <= 122 Or Asc(chr) >= 65 And Asc(chr) <= 90 Then
IsAlpha = True
Else
IsAlpha = False
End If
End Function
Regards,
Gajendra Gupta
This is even more simpler..![]()
Sub Postal_Verify()
If Range("D1") Like "[A-Za-z][0-9][A-Za-z][0-9][A-Za-z][0-9]" Then
Range("A1") = Left(Range("A1"), 3) & " " & Right(Range("A1"), 3)
Else
MsgBox "Invalid Postal Code."
End If
End Sub
Regards,
Gajendra Gupta
Gajendra
Fantastic bit of code - I would never have thought of using Like
I have modified my macro to incorporate your code.
The new macro retains all the requirements as per Gos-C 1st posting and is much simpler than what I had coded
![]()
Private Sub Worksheet_Change(ByVal Target As Range) Dim Rng As Range Dim iChar As Integer For Each Rng In Target If Rng.Column = 1 Then Application.EnableEvents = False Select Case Len(Rng.Value) Case 6 Rng.Value = UCase(Left(Rng.Value, 3) & " " & Right(Rng.Value, 3)) Case 7 Rng.Value = UCase(Rng.Value) End Select If Rng.Value Like "[A-Z][0-9][A-Z][ ][0-9][A-Z][0-9]" Then 'do nothing Else MsgBox Rng.Address & " - invalid Postcode" End If End If Next Rng Application.EnableEvents = True End Sub
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks