प्रकार बेमेल त्रुटि या हम इसे त्रुटि कोड 13 भी कह सकते हैं, यह तब होता है जब हम किसी वैरिएबल का मान निर्दिष्ट करते हैं जो उसके डेटा प्रकार का नहीं होता है, उदाहरण के लिए, यदि हम एक पूर्णांक डेटा टाइप वैरिएबल के लिए दशमलव या दीर्घ मान प्रदान करते हैं तो हम करेंगे इस प्रकार की बेमेल त्रुटि का सामना तब करते हैं जब हम उस कोड को चलाते हैं जिसे त्रुटि कोड 13 के रूप में दिखाया गया है।
VBA टाइप मिसमैच त्रुटि क्या है?
VBA टाइप मिसमैच त्रुटि एक्सेल में "रन टाइम एरर" का एक प्रकार है, और यह इस श्रेणी में नंबर 13 त्रुटि है।
VBA में सीखना शुरू करने और शुरुआती लोगों के लिए, VBA कोड्स द्वारा डाली गई त्रुटि का पता लगाना कठिन है। याद रखें, VBA एक त्रुटि नहीं फेंक रहा है। बल्कि, कोड लिखते समय यह हमारी गलतियों को उजागर कर रहा है।
हम आमतौर पर चर घोषित करते हैं, और हम इसे डेटा प्रकार प्रदान करते हैं। जब हम उन चरों का मान निर्दिष्ट करते हैं, तो हमें यह याद रखना चाहिए कि यह किस प्रकार का डेटा रख सकता है। यदि निर्दिष्ट मान डेटा प्रकार के अनुसार नहीं है, तो हमें "रन टाइम एरर 13: टाइप मिसमैच" मिलेगा।

VBA टाइप मिसमैच रन-टाइम एरर 13 को कैसे ठीक करें?
आइए इस VBA टाइप मिसमैच एरर को समझने के लिए कुछ उदाहरण देखें।
VBA टाइप मिसमैच - उदाहरण # 1
उदाहरण के लिए, नीचे दिए गए VBA कोड को देखें।
कोड:
उप Type_MisMatch_Example1 () मंद के रूप में बाइट k = "Hiii" MsgBox k End उप

मैंने चर "k" को बाइट घोषित किया है।
इसका अर्थ है कि चर "k" 0 से 255 तक मान रख सकता है। लेकिन अगली पंक्ति में, मैंने चर "k" का मान "Hiii" के रूप में निर्धारित किया है।
यह बहुत स्पष्ट है कि डेटा प्रकार किसी पाठ का मान नहीं रख सकता है, इसलिए यहां टाइप मिसमैच एरर आता है।

VBA टाइप मिसमैच - उदाहरण # 2
अब एक और उदाहरण पर एक अलग डेटा प्रकार के साथ नज़र डालें। नीचे दिए गए कोड को देखें।
कोड:
उप Type_MisMatch_Example2 () मंद x बूलियन x = 4556 MsgBox x समाप्ति उप के रूप में

हमने चर "x" को बूलियन घोषित किया है।
बूलियन एक डेटा प्रकार है जो TRUE या FALSE का मान रख सकता है।
उपरोक्त कोड में, हमने 4556 का मान असाइन किया है, जो TRUE या FALSE के डेटा प्रकार के मान के अनुसार नहीं है।
जब हम इस कोड को चलाते हैं, तो आप एक प्रकार की बेमेल त्रुटि की अपेक्षा करेंगे, लेकिन देखें कि जब हम इस कोड को चलाते हैं तो क्या होता है।

आप सोच रहे होंगे कि यह रन टाइम त्रुटि 13 प्रकार की बेमेल त्रुटि क्यों नहीं है।
इसका कारण यह है कि एक्सेल शून्य को छोड़कर सभी संख्याओं को TRUE मानता है। शून्य मान को FALSE माना जाएगा। इसलिए हमें त्रुटि के बजाय TRUE के रूप में परिणाम मिला है।
अब देखिए, मैं पाठ के साथ एक संख्यात्मक मान निर्दिष्ट करूंगा।
कोड:
उप Type_MisMatch_Example2 () बूलियन x के रूप में मंद x = "4556a" MsgBox x उप

यह निश्चित रूप से रन टाइम एरर 13 को फेंक देगा: मिसमैच टाइप करें।

VBA टाइप मिसमैच - उदाहरण # 3
अब, इस उदाहरण के लिए नीचे दिए गए कोड को देखें।
कोड:
Sub Type_MisMatch_Example4 () Dim x As Integer Dim y As String x = 45 y = "2019 Jan" MsgBox x + y End Sub

चर "x" एक पूर्णांक डेटा प्रकार है, और "y" एक स्ट्रिंग डेटा प्रकार है।
X = 45 और y = 2019 जनवरी।
संदेश बॉक्स में, मैंने x + y जोड़ा है।
लेकिन यह सही कोड नहीं है क्योंकि हम स्ट्रिंग टेक्स्ट के साथ नंबर नहीं जोड़ सकते हैं। हम रन टाइम एरर 13 का सामना करेंगे।

VBA टाइप मिसमैच - उदाहरण # 4
अपवाद स्वरूप मामले
ऐसी स्थितियां हैं जहां एक्सेल चर डेटा प्रकार को सौंपे गए गलत डेटा को माफ कर देता है। उदाहरण के लिए, नीचे दिए गए कोड को देखें।
कोड:
उप Type_MisMatch_Example3 () डिम x अस लॉन्ग डिम y as लॉन्ग x = 58.85 y = "85" MsgBox x & vbNewLine & y End Sub

दो घोषित चर "x" और "y" हैं।
इस चर के लिए, निर्दिष्ट डेटा प्रकार "लंबी" है।
लंबे डेटा प्रकार केवल संपूर्ण संख्याएँ स्वीकार करते हैं, दशमलव मान नहीं।
इसलिए सामान्य धारणा है कि टाइप बेमेल त्रुटि का रन टाइम एरर 13 प्राप्त करना।
लेकिन देखते हैं कि जब हम इस कोड को चलाते हैं तो क्या होता है।

वाह क्या बात है!!! हमें 59 और 85 के मान मिले।
ऐसा इसलिए है क्योंकि VBA दशमलव मान 58.85 को निकटतम पूर्णांक मान में बदल देगा, और भले ही संख्या दोहरे कोट्स के साथ संलग्न हो फिर भी यह पूर्णांक मान में परिवर्तित हो जाता है।