Eroare de nepotrivire a tipului VBA (Exemple) - Cum se remediază eroarea 13 în timpul rulării?

Tipul de eroare de nepotrivire sau îl putem numi și ca cod de eroare 13 apare atunci când atribuim o valoare unei variabile care nu este de tipul său de date, de exemplu, dacă oferim o valoare zecimală sau lungă unei variabile de tip de date întregi vom întâmpinați această eroare de nepotrivire de tip când rulăm codul care este afișat ca Cod de eroare 13.

Ce este eroarea de nepotrivire a tipului VBA?

Eroarea de nepotrivire a tipului VBA în excel este un tip de „Eroare de timp de execuție” și este eroarea numărul 13 din această categorie.

Pentru a începe învățăturile în VBA și pentru începători, este greu să găsești eroarea aruncată de codurile VBA. Amintiți-vă, VBA nu aruncă o eroare. Mai degrabă, este doar evidențierea greșelilor noastre în timp ce scriem codul.

De obicei declarăm variabile și îi atribuim tipuri de date. Când atribuim o valoare acelor variabile, trebuie să ne amintim ce fel de date poate deține. Dacă valoarea atribuită nu este conform tipului de date, vom primi „Run Time Error 13: Type Mismatch”.

Cum se remediază eroarea 13 de executare a nepotrivirii tipului VBA?

Să vedem câteva exemple pentru a înțelege această eroare de nepotrivire de tip VBA.

VBA Type Mismatch - Exemplul nr. 1

De exemplu, uitați-vă la codul VBA de mai jos.

Cod:

Sub Type_MisMatch_Example1 () Dim k As Byte k = "Hiii" MsgBox k End Sub

Am declarat variabila „k” drept octet.

Aceasta înseamnă că variabila „k” poate conține valori de la 0 la 255. Dar în linia următoare, am atribuit valoarea variabilei „k” ca „Hiii”.

Este foarte clar că tipul de date nu poate deține valoarea unui text, așa că aici apare eroarea de nepotrivire a tipului.

VBA Type Mismatch - Exemplul nr. 2

Acum aruncați o privire la încă un exemplu cu un alt tip de date. Uită-te la codul de mai jos.

Cod:

Sub Type_MisMatch_Example2 () Dim x As Boolean x = 4556 MsgBox x End Sub

Am declarat variabila „x” ca booleană.

Boolean este un tip de date care poate deține valoarea TRUE sau FALSE.

În codul de mai sus, am atribuit o valoare de 4556, care nu este conform valorilor tipului de date ADEVĂRAT sau FALS.

Când rulăm acest cod, vă așteptați la o eroare de nepotrivire de tip, dar vedeți ce se întâmplă când executăm acest cod.

Trebuie să vă întrebați de ce acest lucru nu dă eroarea de timp de rulare 13 de eroare de nepotrivire de tip.

Motivul pentru acest lucru este că Excel tratează toate numerele ca fiind TRUE, cu excepția zero. Valoarea zero va fi tratată ca FALSĂ. De aceea, am obținut rezultatul ca ADEVĂRAT în loc de eroare.

Vezi acum, voi atribui o valoare numerică cu text.

Cod:

Sub Type_MisMatch_Example2 () Dim x As Boolean x = "4556a" MsgBox x End Sub

Acest lucru va arunca cu siguranță Run Time Error 13: Type Mismatch.

VBA Type Mismatch - Exemplul nr. 3

Acum, uitați-vă la codul de mai jos pentru acest exemplu.

Cod:

Sub Type_MisMatch_Example4 () Dim x As Integer Dim y As String x = 45 y = "2019 Jan" MsgBox x + y End Sub

Variabila „x” este un tip de date întregi, iar „y” este un tip de șir.

X = 45 și y = 2019 ianuarie

În caseta de mesaje, am adăugat x + y.

Dar acesta nu este codul perfect, deoarece nu putem adăuga numere cu text șir. Vom întâlni eroarea de rulare 13.

VBA Type Mismatch - Exemplul # 4

Cazuri excepționale

Există situații în care Excel iartă datele greșite atribuite tipului de date variabile. De exemplu, uitați-vă la codul de mai jos.

Cod:

Subtip_MisMatch_Example3 () Dim x As Long Dim y As Long x = 58,85 y = "85" MsgBox x & vbNewLine & y End Sub

Două variabile declarate sunt „x” și „y”.

Pentru această variabilă, tipul de date atribuit este „lung”.

Tipul de date lung acceptă numai numere întregi, nu valori zecimale.

Deci, percepția generală este de a obține eroarea de timp de rulare 13 a erorii de nepotrivire de tip.

Dar să vedem ce se întâmplă când rulăm acest cod.

Wow!!! Am obținut valorile 59 și 85.

Acest lucru se datorează faptului că VBA va converti valoarea zecimală 58,85 la cea mai apropiată valoare întreagă și, chiar dacă numerele sunt încadrate cu ghilimele duble, totuși, aceasta se convertește doar la valoarea întreagă.

Articole interesante...