एक्सेल - डेटा सत्यापन सूत्र

मुद्दा

मेरे पास एक फैल शीट है जो उपस्थिति को ट्रैक करती है। जब भी मैं उपयोगकर्ता को सचेत करना चाहता हूं, जब भी 3 या अधिक सेल इन सीक्वेंन सम्‍मिलित डेटा सम्‍मिलित हो । जैसे। यदि कोई बीमार में कॉल करता है, तो सेल में एक एस रखा जाता है, अगर यह व्यक्ति बीमार है सोम, मंगल, बुध, तो मैं उपयोगकर्ता को सचेत करना चाहूंगा। (एक ही डेटा के साथ अनुक्रम में 3 दिन)। यदि व्यक्ति थूर के रूप में बीमार है, तो मैं फिर से उपयोगकर्ता को सचेत करना चाहता हूं।

उपाय

  • 1. VBE खोलने के लिए ALT + F11 दबाएँ
  • 2. प्रोजेक्ट एक्सप्लोरर खोलने के लिए CTRL + R दबाएँ
  • 3. उस शीट पर डबल क्लिक करें जिसमें आप यह संदेश बॉक्स चाहते हैं
  • 4. कोड पेस्ट करें

 निजी सब वर्क्सशीट_चेंज (बायल टारगेट रेंज के रूप में) डिम vPos के रूप में वैरिएंट डिम iCol इंटेगर डिम सेलवैल्यू के रूप में वैरिएंट अगर ((लक्ष्य। कॉल्युमेंट्स = 1)) और (लक्ष्य। .Count = 1)) तो फिर लक्ष्य = "तब" उप से बाहर निकलें यदि vPos = "" Application.EnableEvents = लक्ष्य में प्रत्येक सेल के लिए गलत है यदि UCase (सेल) "S" तब GoTo Next_Cell vPos = "" iCol = Cell। कॉलम यदि iCol> = 3 हो तो (सेल = सेल) .Offset (0, -2)) और (Cell.Offset (0, -1) = सेल)) फिर vPos = -1 एंड इफ एंड अगर अगर ((vPos = "")) और (iCol> = 2) और ( iCol <Columns.Count) फिर अगर ((सेल = सेल। ओफ़्सेट (0, -1)) और (सेल ओफ़्सेट (0, 1) = सेल)) तो vPos = 0 एंड इफ़ अगर ((vos =) "") और (iCol <Columns.Count - 1)) तब यदि ((सेल = सेल। ऑफसेट (0, 1)) और (सेल। ऑफसेट (0, 2) = सेल)) तो vPos = 1 एंड अंतिम छोर यदि if (vPos "") तो GoTo End_Sub End if Next_Cell: अगला End_Sub: Application.EnableEvents = True if (vPos "") फिर MsgBox एक पंक्ति में तीन "End if End Sub 

यदि आप अलर्ट केवल सप्ताह के दिनों (सोमवार से शुक्रवार) के लिए सक्षम किए जाते हैं।

 निजी सब वर्क्सशीट_चेंज (बायल टारगेट रेंज के रूप में) डिम vPos के रूप में वेरिएंट डिम iCol के रूप में इंटेगर डिम सेलवैल्यू के रूप में वैरिएंट डिम iOffsetL2 के रूप में इंटेगर डिम iOffsetL1 - इंटेगर डिम iOffsetR1 के रूप में इंटीजर डिम iOffsetR2 के रूप में इंटीजर डिम iOffset2 As Asger Dim सेलआर 1 वेरिएंट डिम सेलआर 2 के रूप में वैरिएंट के रूप में यदि ((लक्ष्य। कॉलम पूर्व) 1) और (लक्ष्य.काउंट.काउंट = 1)) तो यदि टारगेट = "" तो उप अंत समाप्त करें यदि vPos = = "" त्रुटि पर GoTo से बाहर निकलें End_Sub Application.EnableEvents = लक्ष्य सेल में प्रत्येक सेल के लिए गलत सेल = = UCase (सेल ।Value) 'यदि Cell0 "S" तो GoTo Next_Cell vPos = "" iOffsetL1 = 0 iOffsetL1 = 0 iOffsetR1 = 0 iOffsetR1 = 0 iOffsetR2 = 0x2/5। (IsDate (कक्ष (1, iCol))) तब CellL2 = "कचरा मान" CellL1 = "कचरा मूल्य" CellR1 = "कचरा मूल्य" CellR2 = "कचरा मूल्य" चयन प्रकरण (सप्ताह (कक्ष, iCol), vbMonday) ) केस है = 1 iOffsetL2 = -2 iOffsetL1 = -2 iOffsetR2 = 0 iOffsetR2 = 0 केस है = 2 iOffsetL2 = -2 iOffsetL1 = 0 iOffsetR1 = 0 iOffsetR2 = 0 केस है = 4 iOffsetL2 = 0 iOffsetL1 = 0 iOffsetR1 = 0 iOffsetR2 = 2 स्थिति = 5 iOffsetL2 = 0 iOffsetL1 = 0 iOffsetR1 = 0 iOffsetR2 = 2 iOffsetR2 = 2 समाप्ति चयन करें समाप्त होने पर त्रुटि समाप्त होने पर अगली सेल प्रारंभ करें। ))। मान CellL1 = Cell.Offset (0, (-1 + iOffsetL1))। मान CellR1 = Cell.Offset (0, (1 + iOffsetR1))। मान CellR2 - Cell.Offset (0 + iOffsetR2)। )। त्रुटि पर जाएं GoTo End_Sub CellL2 = UCase (CellL2) CellL1 = UCase (CellL1) CellR1 = UCase (CellR1) CellR2 = UCase (CellR2) यदि (iCol + iOffsetL2> 2) तो '? ? X if ((CellL2 = Cell0) और (CellL1 = Cell0)) तब vPos = -1 GoTo End_Sub एंड इफ एंड (यदि iCol + iOffsetL1> 0) और ((iCol - iOffsetR1) <Columns.Count)) तो ') ? एक्स ? अगर ((CellL1 = Cell0) और (Cell0 = CellR1)) तो vPos = 0 GoTo End_Sub एंड इफ एंड अगर अगर (iCol <Columns.Count - 1) तो 'X'? ? अगर (Cell0 = CellR1) और (Cell0 = CellR2)) तब vPos = 1 GoTo End_Sub समाप्त हो जाता है, तो यदि Next_Cell: Next End_Sub: Application.EnableEvents: True if (vPos "") तो MsgBox "तीन को एक पंक्ति में" अंत में यदि समाप्त किया जाता है। अंत उप 

इस टिप के लिए rizvisa1 का धन्यवाद।

पिछला लेख अगला लेख

शीर्ष युक्तियाँ