यदि आप केवल मूल्य की जाँच करना चाहते हैं और जाँच तर्क बहुत जटिल नहीं था तो यह मानक एक्सेल डेटा सत्यापन के साथ किया जा सकता है। हालाँकि, चूंकि आप मूल्य को सही करने के लिए पुन: स्वरूपित करना चाहते हैं, इसलिए आपको Office के लिए VBA या Visual Studio टूल्स का उपयोग करना होगा। निम्नलिखित एक साधारण VBA मैक्रो है जो आप चाहते हैं।
जादू तब होता है जब Worksheet_Change घटना दूर हो जाती है। उदाहरण के लिए, मेरा मानना है कि आप पहले कॉलम में एकल मान दर्ज कर रहे हैं। CorrectPartNo समारोह भारी उठाने करता है। यह दर्ज मूल्य का विश्लेषण करता है और एक सही ढंग से स्वरूपित मूल्य देता है या यह इंगित करने के लिए कुछ भी नहीं है कि एक सत्यापन त्रुटि थी (यह केवल अधिकतम लंबाई की जांच करता है)। प्रसंस्करण आपके उदाहरण के साथ काम करता है, लेकिन यह वास्तविक दुनिया के लिए बहुत सरल है। इसे नियमित अभिव्यक्ति या अन्य समान शक्तिशाली प्रसंस्करण के साथ आसानी से बढ़ाया जा सकता है।
ईवेंट हैंडलर या तो सेल को सही ढंग से फॉर्मेट किए गए पार्ट नंबर के साथ अपडेट करके जारी रखता है या यह उपयोगकर्ता द्वारा दर्ज किए गए मान को त्रुटि को इंगित करने के लिए बोल्ड और लाल बनाता है।
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim NewValue As String
If (Target.Column = 1 And Target.Count = 1) Then
Application.EnableEvents = False
NewValue = CorrectPartNo(Target.Value)
If (Len(NewValue) = 0) Then
Target.Font.Color = vbRed
Target.Font.Bold = True
Else
Target.Value = NewValue
End If
Application.EnableEvents = True
End If
End Sub
Function CorrectPartNo(PartNo As String)
Dim StartPartNo As String
Dim EndPartNo As String
Dim EndPartNoPosition As Integer
StartPartNo = Left(PartNo, 1)
If (Mid(PartNo, 2, 1) = "-") Then
If (Len(PartNo) > 4) Then
CorrectPartNo = ""
Exit Function
Else
EndPartNoPosition = 3
End If
Else
If (Len(PartNo) > 3) Then
CorrectPartNo = ""
Exit Function
Else
EndPartNoPosition = 2
End If
End If
EndPartNo = Right("0" + Mid(PartNo, EndPartNoPosition), 2)
CorrectPartNo = StartPartNo + EndPartNo
End Function