ВБА грешка у неусклађености типа (примери) | Како исправити грешку током извођења 13?

Грешка у неусклађености типа, или је можемо назвати и кодом грешке 13, јавља се када променљивој која није њен тип података доделимо вредност, на пример, ако променљиву целобројног типа података дамо децималну или дугу вредност, наићи на ову грешку неусклађености типа када покренемо код који је приказан као код грешке 13.

Шта је ВБА грешка у неусклађености типа?

ВБА грешка у неусклађености типа у Екцелу је врста „Грешке у времену извођења“ и представља грешку број 13 у овој категорији.

За почетак учења на ВБА и за почетнике, тешко је пронаћи грешку коју су створили ВБА кодови. Имајте на уму да ВБА не баца грешку, већ само наглашава наше грешке током писања кода.

Обично декларишемо променљиве и додељујемо им типове података. Када тим променљивим доделимо вредност, морамо да запамтимо какве податке она може да садржи, ако додељена вредност није у складу са типом података, добићемо „Рун Тиме Еррор 13: Типе Мисматцх“.

Како исправити грешку при раду током неусклађености ВБА типа 13?

Погледајмо неколико примера за разумевање ове грешке ВБА неусклађености типа.

Овај ВБА образац за неподударање типа Екцел можете преузети овде - ВБА образац за неподударање типа Екцел

Неусаглашеност типа ВБА - пример # 1

За пример погледајте доле наведени ВБА код.

Шифра:

 Суб Типе_МисМатцх_Екампле1 () Дим к Ас Бите к = "Хиии" МсгБок к Енд Суб 

Прогласио сам променљиву „к“ као бајт.

То значи да променљива „к“ може да садржи вредности од 0 до 255. Али у следећем реду доделио сам вредност променљивој „к“ као „Хиии“.

Јасно је да тип података не може да садржи вредност текста, па овде долази до грешке у неусклађености типа.

Неусаглашеност типа ВБА - пример # 2

Сада погледајте још један пример са другим типом података. Погледајте доњи код.

Шифра:

 Подтип_МисМатцх_Екампле2 () Дим к Ас Боолеан к = 4556 МсгБок к Енд Суб 

Декларисали смо променљиву „к“ као логичку вредност.

Боолеан је тип података који може да садржи вредност ИСТИНИТО или ФАЛСЕ.

У горњем коду смо доделили вредност 4556, која није у складу са вредностима типа података ТРУЕ или ФАЛСЕ.

Када покренемо овај код, очекивали бисте грешку у неподударању типа, али погледајте шта се дешава када покренемо овај код.

Сигурно се питате зашто ово није грешка у времену извођења 13 грешке у неусклађености типа.

Разлог томе је што се екцел третира све бројеве као ИСТИНЕ, осим нуле. Нулта вредност ће бити третирана као ФАЛСЕ. Зато смо резултат добили ТРУЕ, уместо грешке.

Сада погледајте додијелићу нумеричку вриједност с текстом.

Шифра:

 Суб Типе_МисМатцх_Екампле2 () Дим к Ас Боолеан к = "4556а" МсгБок к Енд Суб 

Ово ће дефинитивно довести до грешке у времену извођења 13: Неподударање типа.

Неусаглашеност типа ВБА - пример # 3

Сада, погледајте доњи код за овај пример.

Шифра:

 Суб Типе_МисМатцх_Екампле4 () Дим к Ас Интегер Дим и Ас Стринг к = 45 и = "2019 Јан" МсгБок к + и Енд Суб 

Променљива „к“ је целобројни тип података, а „и“ је низ података.

Кс = 45 и и = 2019. јануар

У оквир за поруку додао сам к + и.

Али ово није савршен код, јер не можемо додати бројеве текстовима у низу. Наићи ћемо на грешку времена извођења 13.

Неусаглашеност типа ВБА - пример # 4

Изузетни случајеви

Постоје ситуације у којима Екцел опрашта погрешне податке додељене променљивом типу података. За пример погледајте доњи код.

Шифра:

 Суб Типе_МисМатцх_Екампле3 () Дим к к Лонг Дим и ас лонг к = 58,85 и = "85" МсгБок к & вбНевЛине & и Енд Суб 

Две декларисане променљиве су „к“ и „и“.

За ову променљиву додељен је тип података „Лонг“.

Дуги тип података прихвата само целе бројеве, а не децималне вредности.

Дакле, општа перцепција је да се добије грешка времена извођења 13 грешке у неусклађености типа.

Али да видимо шта ће се догодити када покренемо овај код.

Вау !!! Добили смо вредности 59 и 85.

То је зато што ће ВБА претворити децималну вредност 58,85 у најближу целобројну вредност, а иако су бројеви затворени двоструким наводницима, он претвара само у целобројну вредност.