Place new Code to Working Code
Solved/Closed
smuneeb
Posts
67
Registration date
Saturday September 5, 2015
Status
Member
Last seen
March 8, 2017
-
Dec 6, 2015 at 01:52 PM
smuneeb Posts 67 Registration date Saturday September 5, 2015 Status Member Last seen March 8, 2017 - Jan 1, 2016 at 11:27 AM
smuneeb Posts 67 Registration date Saturday September 5, 2015 Status Member Last seen March 8, 2017 - Jan 1, 2016 at 11:27 AM
Related:
- Place new Code to Working Code
- Battery reset code - Guide
- Samsung volume increase code - Guide
- How to get whatsapp verification code online - Guide
- Cs 1.6 code - Guide
- Samsung keypad reset code - Guide
1 response
rizvisa1
Posts
4478
Registration date
Thursday January 28, 2010
Status
Contributor
Last seen
May 5, 2022
766
Dec 15, 2015 at 03:51 PM
Dec 15, 2015 at 03:51 PM
This is one option
Private Function isDuplicate(Target As Range) As Boolean
isDuplicate = False
If Target.Value <> "Applied For" Then
If WorksheetFunction.CountIf(Me.Range("C11:C510"), Target.Value) > 1 Then
Target.Select
cEdit = MsgBox("You have enter the Enrolment No. <" & Target.Value & "> in <" & ShtName & ">" _
& vbNewLine & "is already exist. Click Ok to remove OR" _
& vbNewLine & "Click Cancel for Correction", vbExclamation + vbOKCancel + vbDefaultButton2, "Duplicate Entry!")
isDuplicate = True
Select Case cEdit
Case Is = vbOK
Target.ClearContents
Case Is = vbCancel
Target.Select
Application.SendKeys "{F2}"
End Select
End If
End If
' New Code for Duplication Entry ends here
End Function
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Count > 1) Then
'too many cells are selected. your code is not supporting that
Exit Sub
End If
If Intersect(Target, Me.Range("C11:C510")) Is Nothing Then Exit Sub
On Error GoTo ReEnableEvents
Application.EnableEvents = False
Dim regExp As Object
Dim strTarg As String
Dim cEdit As Integer
Dim i As Long
Dim strPattern As String
Dim arrTarg(1 To 4) As String
Dim lngMidChrs As Long
Dim ShtName As String
Dim WrkbookName As String
ShtName = ActiveSheet.Name
WrkbookName = ActiveWorkbook.Name
Set rngCheck = Range("D11:D510")
Set rngBlock = Range("C11:C510")
' New Code for Empty Previous Cell of same Row (Seat No) starts here
If Not Intersect(Target, Me.Range("C11:C510")) Is Nothing Then
If Target.Value = "" Then GoTo ReEnableEvents
If (IsEmpty(Target.Offset(0, -1))) Then
Target.Select
MsgBox "First enter Seat No. in <" & ShtName & ">", vbInformation + vbOKOnly, "Entry Required"
Target.ClearContents
GoTo ReEnableEvents
End If
End If
' New Code for Empty Previous Cell of same Row (Seat No)ends here
'Test if user entered "Applied For" in lieu of Enrol No. code.
'Test in upper case and if correct characters then convert to Proper case"
If UCase(Trim(Target.Value)) = "APPLIED FOR" Then
Target.Value = WorksheetFunction.Proper(Trim(Target.Value))
GoTo ReEnableEvents 'Finished processing because "Applied for" entered
ElseIf (isDuplicate(Target)) Then
GoTo ReEnableEvents
End If
Set regExp = CreateObject("VBScript.RegExp")
'Following line represents: '1st element plus Slash after 1st element
'2nd element plus Slash after 2nd element
'3rd element plus Slash after 3rd element
'4th element
'Convert alpha characters to upper case and remove spaces and slashes (if any)
strTarg = UCase(Replace((Replace(Target.Value, " ", "")), "/", ""))
strPattern = "^[A-Z]{6,7}[0-9]{8}$" 'Pattern to match
If IsAMatch(regExp, strPattern, strTarg) Then
'Insert the slashes in that pattern with 3 alphas in the second block
If Len(strTarg) = 14 Then 'If 3 alpha + 3 alpha + 4 numeric + 4 numeric
Target.Value = Left(strTarg, 3) & "/" & Mid(strTarg, 4, 3) & "/" & Chr(10) _
& Mid(strTarg, 7, 4) & "/" & Mid(strTarg, 11, 4)
Else 'If 3 alpha + 4 alpha + 4 numeric + 4 numeric
'insert the slashes in the pattern with 4 alphas in the second block
Target.Value = Left(strTarg, 3) & "/" & Mid(strTarg, 4, 4) & "/" & Chr(10) _
& Mid(strTarg, 8, 4) & "/" & Mid(strTarg, 12, 4)
GoTo ReEnableEvents
End If
'It will help to remove data if user enter enrolment no as student columns contains "Repeater(s)" Or "Improvement"
If Intersect(Target, rngBlock) Is Nothing Then
GoTo ReEnableEvents ' Do nothing or what you want
Else
If Target.Offset(0, 1) = "Repeater(s)" Or Target.Offset(0, 1) = "Improvement" Then
Target.Select
MsgBox "As you enter <" & Target.Offset(0, 1) & "> in Student's Name Column in <" & ShtName & ">" _
& vbNewLine & "that is why you cannot enter Enrolment No.", vbInformation, "Information"
Target.ClearContents
End If
End If
Application.EnableEvents = True
'ErrHandler:
Else
Target.Select
cEdit = MsgBox("You entered <" & Target & "> is Invalid in <" & ShtName & ">" _
& vbNewLine & "Re-enter the Enrolment No. in one of the following description" _
& vbNewLine & "1. Write only -> applied for <- OR" _
& vbNewLine & "2. First write any 6 Alpha Characters and" _
& vbNewLine & " Second write any 8 Numeric Charaters OR" _
& vbNewLine & "3. First write any 7 Alpha Characters and" _
& vbNewLine & " Second write any 8 Numeric Charaters" _
& vbNewLine & " as provided by Enrolment Section." _
& vbNewLine & "4. Slashes may be omitted during entry." _
& vbNewLine & "Click Ok for Remove Enrolment no OR" _
& vbNewLine & "Click Cancel for Correction", vbCritical + vbOKCancel + vbDefaultButton2, "Invalid Entry!")
If cEdit = vbOK Then
Target.ClearContents
End If
If cEdit = vbCancel Then
Target.Select
Application.SendKeys "{F2}"
End If
ReEnableEvents:
If Err.Number <> 0 Then
MsgBox "Error occurred in Private Sub Worksheet_Change." _
& vbNewLine & "Refer to Administrator Muneeb (KUBS - University of Karachi)" _
& vbNewLine & "of this workbook.", vbCritical, "Error!"
End If
Application.EnableEvents = True
End If
Application.EnableEvents = True
End Sub
Function IsAMatch(regEx As Object, strPatt As String, strToTest As String) As Boolean
'On Error GoTo ReEnableEvents
Dim regMatch As Object ' MatchCollection
With regEx
.Pattern = strPatt
.MultiLine = False
.IgnoreCase = False 'Do NOT IgnoreCase. Set to True to Ignore Case
End With
'Match test string against regEx pattern string
Set regMatch = regEx.Execute(strToTest)
IsAMatch = (regMatch.Count > 0)
Exit Function 'Do not re-enable events here unless error sends code to Sub routine
ReEnableEvents:
If Err.Number <> 0 Then
MsgBox "Error occurred in Function IsAMatch." _
& vbCrLf & "Refer to Administrator of this workbook."
End If
Application.EnableEvents = True
End Function
Jan 1, 2016 at 11:27 AM
First of all I would like to apologize for late reply. Reason I was ill.
and Your code is perfectly work
I am very grateful, I have no words for Thanks
Regards