Guherbar û berdewam di VBA de

Di VBA de, wekî her zimanek bernamenûsê ya din, guhêrbar û domdar têne bikar anîn da ku her nirxan hilînin. Wekî ku ji navê xwe diyar dike, guhêrbar dikarin biguhezin, dema ku domdar nirxên sabît hilînin.

Mînakî, domdar Pi nirxa 3,14159265 diparêze… Di dema pêkanîna bernameyê de hejmara "Pi" nayê guheztin, lê dîsa jî hêsantir e ku meriv nirxek wusa wekî domdar hilîne.

Di heman demê de, em dikarin guhêrbar bikar bînin sVAT_Rate ji bo hilanîna rêjeya VAT li ser tiştên kirîn. Nirxa guherbar sVAT_Rate dibe ku li gorî hilbera kirîn cûda bibe.

Cûreyên Daneyê

Hemî guhêrbar û domdar ji celebek daneya taybetî ne. Tabloya jêrîn celebên daneyê yên ku di VBA de têne bikar anîn bi ravekirin û rêzek nirxên gengaz destnîşan dike:

Cureyê daneyê MezinayîTerîfRêza nirxan
bytes1 bytesHejmarên erênî yên erênî; gelek caran ji bo daneyên binary bikaranînji 0 heta 255
boolean2 bytesDibe ku rast an jî derewîn beRast an Derew
Integer2 bytesTevahiya jimare (bê pareke perçeyî)ji -32 heta +768
Dirêj4 bytesHêjmarên mezin (bê parçeyek)от -2 147 483 648 до +2 147 483 647
yekoyek4 bytesHejmara xala herikîna yekane rastji -3.4e38 ber +3.4e38
Dûcar8 bytesHejmara xala herikîna ducarî rastji -1.8e308 ber +1.8e308
Diravcins8 bytesHejmara xala herikîn, bi hejmareke sabît ya cihên dehiyêот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
Date8 bytesDîrok û dem - Daneyên cureyê Dîrok bi jimareyek xala herikîn tê nîşandan. Beşa yekjimar a vê hejmarê tarîxê, û beşa perçeyî jî demê îfade dike.ji 1 Çile 100 heta 31 Kanûn 9999
Tişt4 bytesObject referansaHer referansa object
BendiguhezeKaraktera set. Tîpa String dikare dirêjahiya sabît an guhêrbar be. Zêdetir bi dirêjahiya guhêrbar tê bikar anînDirêjahiya sabît - bi qasî 65 tîpan. Dirêjahiya guhêrbar - bi qasî 500 mîlyar tîpan
variantdiguhezeDibe ku dîrokek, floatek, an rêzek karakterek hebe. Ev cure di rewşên ku ji berê de nayê zanîn dê kîjan celeb daneyan têkevin tê bikar anîn.Jimar - Ducar, têl - Têl

Eşkere ye, bi karanîna tabloya li jor û bijartina celebê daneya rast, hûn dikarin bîranînê bi aborîtir bikar bînin (mînak, celebê daneyê hilbijêrin Integer di ber Dirêj or yekoyek di ber Dûcar). Lêbelê, dema ku hûn celebên daneya tevlihevtir bikar bînin, hûn hewce ne ku hay jê hebin ku koda we hewl nede ku nirxên mezin ên nehevseng di nav wan de bicîh bike.

Daxuyaniya Guherbar û Constantan

Têbiniya Wergêr: Axaftina li ser guhêrbarên di VBA de, hêja ye ku meriv xalek din a pir girîng behs bike. Ger em guhêrbarek ragihînin lê ti nirxek jê re nehêlin, wê hingê ew bi nirxek xwerû tê destpêkirin:

• rêzikên nivîsê bi rêzikên vala têne destpêkirin;

• hejmar - nirx 0;

• variables type boolean - Derew;

• tarîx - 30 Kanûn 1899.

Berî ku guhêrbar an domdar were bikar anîn, divê were ragihandin. Ji bo vê yekê, rêzika kodê ya hêsan a jêrîn li makroyê zêde bikin:

Dim Имя_Переменной As Тип_Данных

Di rêzika jorîn ya kodê de Navê_guhêrbar navê guhêrbar e ku dê di kodê de were bikar anîn, û Data_Type yek ji celebên daneyê ye ku ji tabloya ku di vê gotarê de hinekî berê hatî dayîn. Bo nimûne:

Dim sVAT_Rate As Single Dim i As Integer

Constant bi heman rengî têne ragihandin, lê dema ku domdar têne ragihandin, divê nirxa wan tavilê were destnîşan kirin. Mînakî, bi vî rengî:

Const iMaxCount = 5000 Const iMaxScore = 100

Ne hewce ye ku guhêrbar di Excel de were ragihandin. Ji hêla xwerû ve, hemî guhêrbarên ku di Excel-ê de hatine navnîş kirin lê nehatine ragihandin dê celeb bin variant û dê bikaribe hem nirxa hejmarî û hem jî nivîsê qebûl bike.

Ji ber vê yekê, bernamenûs dikare di her kêliyê de guhêrbarek nû bikar bîne (tevî ku ew nehatibe ragihandin), û Excel dê wê wekî guhêrbarek celebê binirxîne. variant. Lêbelê, çend sedem hene ku çima divê ev neyê kirin:

  1. Bikaranîna bîranîn û leza hesabkirinê. Ger hûn guhêrbarek bi nîşana celebê daneyê diyar nekin, wê hingê ew ê ji hêla xwerû ve li celebê were danîn. variant. Ev cureyê daneyê ji celebên din ên daneyê bêtir bîranîn bikar tîne. Dibe ku çend baytên zêde ji her guhêrbar re pir deng nebin, lê di pratîkê de, bername dikarin bi hezaran guhêrbar hebin (nemaze dema ku bi rêzikan re dixebitin). Ji ber vê yekê, bîranîna zêde ji hêla guhêrbarên mîna ve tê bikar anîn variant, li gorî guherbarên cureyê Integer or yekoyek, dikare bi hejmareke girîng zêde bike. Ji bilî vê, operasyonên bi guherbarên cureyê variant ji guherbarên cureyên din, bi rêzê, hezar guherbarên din ên cureyê, pir hêdîtir têne darve kirin. variant dikare hesabên girîng hêdî bike.
  2. Pêşîlêgirtina tîpên di navên guhêrbar de. Ger hemî guhêrbar bêne ragihandin, wê hingê daxuyaniya VBA dikare were bikar anîn - Vebijêrk eşkere (em ê paşê li ser wê bipeyivin) ji bo ku hemî guhêrbarên ne diyarkirî nas bikin. Ev xuyangiya xeletiyek di bernameyê de wekî encama navekî guhêrbar bi xeletî hatî nivîsandin ji holê radike. Ji bo nimûne, bikaranîna guherbarek bi navê sVAT_Rate, hûn dikarin xeletiyek tîpê bikin û, nirxek ji vê guhêrbar re bidin, binivîsin: "VATRate = 0,175". Tê payîn ku ji niha û pê ve, guherbar sVAT_Rate divê nirxa 0,175 hebe - lê bê guman ew nake. Ger awayê ragihandina mecbûrî ya hemî guhêrbarên hatî bikar anîn çalak be, wê hingê berhevkarê VBA dê tavilê xeletiyek destnîşan bike, ji ber ku ew guhêrbar nabîne. VATRAte di nav wan de hatine ragihandin.
  3. Nirxkirina nirxên ku bi celebê diyarkirî yê guhêrbar re hev nagirin. Ger hûn guhêrbarek ji celebek diyarkirî ragihînin û hewl bidin ku daneya celebek cûda jê re veqetînin, hûn ê xeletiyek bistînin, ku heke neyê rast kirin, dikare bibe sedema têkçûna bernameyê. Di nihêrîna pêşîn de, dibe ku ev wekî sedemek baş xuya bike ku meriv guhêrbaran ranegihîne, lê di rastiyê de, ji berê ve derdikeve holê ku yek ji guhêrbaran daneya xelet a ku diviyabû werbigire wergirtiye - ewqas çêtir! Wekî din, heke bername berdewam bike, dibe ku encam nerast û neçaverê be, û peydakirina sedema xeletiyan dê pir dijwartir be. Di heman demê de gengaz e ku makro "bi serfirazî" were darve kirin. Wekî encamek, xeletî dê bêhêz bimîne û xebat dê bi daneyên nerast berdewam bike!

Di vî warî de, tê xwestin ku di zûtirîn dem de celebek daneya xelet were tespît kirin û xeletiyên weha di kodê de rast bikin. Ji ber van sedeman, tê pêşniyar kirin ku hûn dema ku makroyek VBA dinivîsin hemî guhêrbaran ragihînin.

Vebijêrk eşkere

Makînevan Vebijêrk eşkere dibe sedem ku hemî guhêrbarên ku dê di koda VBA-yê de werin bikar anîn bêne ragihandin, û hemî guhêrbarên nedaxuyandî di dema berhevkirinê de wekî xeletî nîşan dide (berî ku darvekirina kodê dest pê bike). Serlêdana vê operatorê ne dijwar e - tenê vê rêzê li jorê pelê VBA binivîse:

Option Explicit

Heke hûn dixwazin her gav têxin Vebijêrk eşkere li serê her modulek nû ya VBA ya hatî afirandin, ev dikare bixweber were kirin. Ji bo vê yekê, hûn hewce ne ku vebijarkê çalak bikin Daxuyaniya Variable Require di mîhengên edîtorê VBA de.

Ev bi vî rengî tê kirin:

  • Ji menuya Edîtorê Visual Basic, bikirtînin Amûrên > Vebijêrkên
  • Di diyaloga ku xuya dike de, tabloyê vekin Weşanvan
  • Qumarê kontrol bikin Daxuyaniya Variable Require Û çapemeniyê OK

Dema ku çalak be, string Vebijêrk eşkere dê bixweber di destpêka her modulek nû ya hatî afirandin de were danîn.

Qada Guherbar û Constantan

Her guhêrbar an domdar xwedan qada xweya sînorkirî ye, ango beşek bisînor a bernameya ku ev guhêrbar tê de heye. Berfireh bi cihê ku ragihandina guhêrbar an domdar hatîye çêkirin ve girêdayî ye. Ji bo nimûne, guherbarê bigirin sVAT_Rate, ku di fonksiyonê de tê bikaranîn Tevahiya_Lêçûn. Tabloya jêrîn du vebijarkên ji bo pîvana guhêrbar nîqaş dike sVAT_Ratedi modulê de di du pozîsyonên cûda de hate ragihandin:

Vebijarka Eşkere Dim sVAT_Rate Wek Fonksiyona Yekane Total_Cost() Wek Ducar ... Fonksiyon Dawî
Ger guherbar sVAT_Rate di destpêka modulê de hate ragihandin, wê hingê qada vê guhêrbar dê tevaya modulê be (ango guhêrbar sVAT_Rate dê ji hêla hemî prosedurên vê modulê ve were nas kirin).

Ji ber vê yekê, eger di fonksiyonê de Tevahiya_Lêçûn têgûherr sVAT_Rate dê hin nirx were destnîşankirin, wê hingê fonksiyona din a ku di heman modulê de hatî darve kirin dê guhêrbar bikar bîne sVAT_Rate bi heman wateyê.

Lêbelê, heke hin fonksiyonek ku di modulek din de cih digire were gazî kirin, wê hingê ji bo wê guhêrbar sVAT_Rate dê neyê zanîn.

Vebijêrk Fonksiyona eşkere Total_Cost() Wek Du Dim sVAT_Rate Wek Yekane ... Fonksiyon Dawî
Ger guherbar sVAT_Rate di destpêka fonksiyonê de hate ragihandin Tevahiya_Lêçûn, wê demê çarçoveya wê dê tenê bi vê fonksiyonê (ango di hundurê fonksiyonê de) sînordar be Tevahiya_Lêçûn, hûn dikarin guhêrbar bikar bînin sVAT_Rate, lê ne li derve).

Dema ku hewl didin ku bikar bînin sVAT_Rate di pêvajoyek din de, berhevkarê VBA dê xeletiyek rapor bike ji ber ku ev guhêrbar li derveyî fonksiyonê nehat ragihandin Tevahiya_Lêçûn (bi şertê ku operator tê bikar anîn Vebijêrk eşkere).

Di mînaka ku li jor hatî destnîşan kirin de, guhêrbar di asta modulê de bi keywordê re tê ragihandin Dim. Lêbelê, dibe ku hewce be ku guhêrbarên diyarkirî di modulên din de werin bikar anîn. Di rewşên weha de, li şûna keywordek guhêrbarek ragihandin Dim keyword divê bê bikaranîn Alenî.

Bi awayê, ji bo ku guhêrbarek di asta modulê de, li şûna keywordê were ragihandin Dim keyword dikare were bikar anîn taybet, ku destnîşan dike ku ev guhêrbar tenê di modula heyî de tê bikar anîn.

Her weha hûn dikarin peyvên sereke bikar bînin da ku berdewaman ragihînin. Alenî и taybet, lê ne li şûna keywordê Const, bi wê re.

Nimûneyên jêrîn karanîna peyvan nîşan didin Alenî и taybet ji bo guherbar û sabitan tê sepandin.

Vebijêrk sVAT_Rêjeya Giştî ya Eşkere Wek Bergiriya Giştî ya Yekane iMax_Count = 5000 ...    
Di vê nimûneyê de, peyva sereke Alenî ji bo ragihandina guherbarekê tê bikaranîn sVAT_Rate û berdewam iMax_Count. Hêmanên ku bi vî rengî hatine ragihandin dê tevahiya projeya heyî be.

Ev wateya ku sVAT_Rate и iMax_Count dê di her modulek projeyê de peyda bibe.

Vebijarka Eşkere ya Taybet sVAT_Rate Wek Veqetandek Taybet a Yekane iMax_Count = 5000 ...    
Di vê nimûneyê de, ji bo ragihandina guherbarek sVAT_Rate û berdewam iMax_Count keyword bikaranîn taybet. Qada van hêmanan modula heyî ye.

Ev wateya ku sVAT_Rate и iMax_Count dê di hemî prosedurên modula heyî de peyda bibe, lê dê ji prosedurên di modulên din re peyda nebe.

Leave a Reply