Vitendaji vya Excel vba vya kufanya kazi na kamba. VBA hufanya kazi kwa kufanya kazi na maandishi. Uendeshaji wa Kamba

Herufi 'A' hadi 'Z' ziko katika mpangilio wa kupanda, yaani, kila herufi ina thamani ya kawaida inayolingana na nafasi yake katika alfabeti. Thamani hii ya kawaida inaweza kupatikana kwa kutumia kazi amri.
amri (maneno)- hurejesha nambari ya ufuatiliaji ya herufi au thamani ya aina nyingine tofauti.
ord('I'), ord('J'). Matokeo: 73, 74 (msimbo wa ASCII)

Nambari ya serial ya barua inategemea nambari iliyotumiwa. Lakini, bila kujali nambari iliyotumiwa, maadili ya herufi hufuata kwa mpangilio wa kupanda:
amri ('A')< ord(‘B’) < ord(‘C’) … < ord(‘Z’)
ingawa ord(‘Z’) – ord(‘A’) si lazima iwe sawa na 25. Vivyo hivyo kwa herufi ndogo:
amri ('a')< ord(‘b’) < ord(‘c’) … < ord(‘z’)

Hakuna uhusiano dhahiri kati ya herufi kubwa na ndogo zinazolingana, lakini unaweza kutegemea kwa usalama ukweli kwamba ord('a') - ord('A') ina maana sawa na ord('z') - ord('Z ').

Bila kujali nambari iliyotumiwa, maadili ya kawaida ya nambari pia yamepangwa kwa mpangilio wa kupanda:
amri ('0')< ord(‘1’) < ord(‘2’) … < ord(‘9’)
na, zaidi ya hayo, maadili ya kawaida ya nambari za karibu hutofautiana na 1; kwa hivyo, ord('9') - ord('0') = 9. Inafuata kwamba thamani ya nambari ya tarakimu d (aina ya char) inaweza kupatikana kama hii.
thamani:= ord(d) - ord('0').

Pascal inasaidia aina char, nambari kamili nk. Mbali nao, programu ina haki ya kufafanua aina nyingine kwa kuorodhesha mlolongo wa mara kwa mara. Kwa mfano, aina iliyoainishwa na hesabu:
siku za aina = (mon, tue, wed, thu, fri, sat, sun);

Mara kwa mara ya aina iliyobainishwa na hesabu huwa na thamani za ordinal zenye msingi sifuri. Kwa mfano, ord(mon) inarudisha 0, ord(sun) inarudisha 6; mon< sun.

Aina boolean- aina iliyoorodheshwa, ambayo imewekwa kiatomati kama
aina boolean = (uongo, kweli);
kwa hivyo ord(false) inatoa 0, ord(kweli) inatoa 1; uongo< true.

kazi ya chr

Rudi kwa amri ni kazi Chr.
chr(maneno)- inarejesha mhusika ambaye thamani ya ordinal imetajwa na parameter; thamani isiyo sahihi husababisha makosa.
chr(73), chr(74). Matokeo: I, J (usimbaji wa ASCII)
chr(1000). Matokeo: hitilafu

Hufanya kazi succ na pred

Maadili ya kawaida hayahitajiki na wao wenyewe. Mara nyingi inatosha kujua kipengee kinachofuata au kilichopita kwa mpangilio fulani. Vitendo hutumikia kusudi hili succ Na pred.
succ(maneno)- inarudisha kipengee kinachofuata kilichoainishwa kama parameta.
succ('A'), succ('0'), succ(0). Matokeo: B, 1 (tabia), 1 (nambari)
succ (uongo). Matokeo: kweli
pred (maneno)- inarudisha kipengee kinachotangulia kilichoainishwa kama kigezo.
pred(‘Z’), pred(‘9’), pred(9). Matokeo: Y, 8 (herufi), 8 (nambari)
kabla (kweli). Matokeo: uongo

Kazi hizi mbili zinaweza kutumika kubainisha vipengele vinavyofuata na vilivyotangulia vya aina iliyobainishwa na hesabu. Wacha tuchukue aina za siku zilizofafanuliwa mapema: pred(sun) returns sat, succ(mon) inarudi tue.

Hata hivyo, itakuwa si sahihi kuandika writeln(pred(sun)) kwa sababu vipengele vya aina iliyoorodheshwa haviwezi kusomwa au kuchapishwa, ambayo bila shaka hupunguza manufaa ya kutumia aina hizo. Ukadiriaji bora wa writeln(pred(sun)) ni taarifa writeln(ord(pred(sun))), ambayo huchapisha nambari 5 (thamani ya kawaida ya sat).

Katika makala hii tutaangalia kufanya kazi na masharti katika VBA kwa kutumia mifano ya kazi InStr, LCASE, UCase, Left, Right, Mid, Ltrim, Rtrim, Trim, Len, Replace, Space, StrComp, String, StrReverse.

Mifuatano ni mfuatano wa herufi ambao unaweza kujumuisha alfabeti, nambari, herufi maalum au zote. Tofauti inaitwa kamba ikiwa imefungwa kwa nukuu mbili "".

Sintaksia

variablename = "kamba"

Mifano

Kazi za kamba

Kuna vitendaji vya Kamba vya VBA vilivyofafanuliwa awali ambavyo husaidia wasanidi kufanya kazi na mifuatano kwa ufanisi. Zifuatazo ni njia za Kamba zinazoungwa mkono katika VBA. Tafadhali bonyeza kila mbinu kujua kwa undani.

Jina la kazi na maelezo

InStr

Chaguo za kukokotoa za InStr hurejesha utokeaji wa kwanza wa mfuatano mmoja ndani ya mfuatano mwingine. Utafutaji hutokea kutoka kushoto kwenda kulia.

Sintaksia

InStr(string1,string2[,compare])

Maelezo ya Kigezo

  • Anza ni kigezo cha hiari. Inabainisha nafasi ya kuanzia kwa utafutaji. Utafutaji huanza kutoka nafasi ya kwanza kutoka kushoto kwenda kulia.

mfano

Private Sub Constant_demo_Click() Dim Var As Variant Var = "Microsoft VBScript" MsgBox ("Mstari wa 1: " & InStr(1, Var, "s")) MsgBox ("Mstari wa 2: " & InStr(7, Var, "s) " ")) MsgBox ("Mstari wa 3: " & InStr(1, Var, "f", 1)) MsgBox ("Mstari wa 4: " & InStr(1, Var, "t", 0)) MsgBox ("Mstari 5 : " & InStr(1, Var, "i")) MsgBox ("Mstari wa 6: " & InStr(7, Var, "i")) MsgBox ("Mstari wa 7: " & InStr(Var, "VB") ) Maliza Sub

Mstari wa 1:6
Mstari wa 2: 0
Mstari wa 3:8
Mstari wa 4:9
Mstari wa 5:2
Mstari wa 6:16
Mstari wa 7:11

Hurejesha tukio la kwanza la kamba ndogo iliyobainishwa. Utafutaji hutokea kutoka kushoto kwenda kulia.

InStrRev

Chaguo za kukokotoa za InStrRev hurejesha utokeaji wa kwanza wa mfuatano mmoja ndani ya mfuatano mwingine. Utafutaji hutokea kutoka kulia kwenda kushoto.

Sintaksia

InStrRev(string1,string2[,start,])

Maelezo ya Kigezo

  • String1 ndio kigezo kinachohitajika. Tafuta kamba.
  • String2 ni kigezo kinachohitajika. Mfuatano wa kutafuta String1.
  • Anza ni kigezo cha hiari. Inabainisha nafasi ya kuanzia kwa utafutaji. Utafutaji huanza kutoka nafasi ya kwanza kutoka kulia kwenda kushoto.
  • Linganisha - Hiari parameter. Inabainisha ulinganisho wa mfuatano. Inaweza kuchukua maadili yafuatayo.
  • 0 = vbBinaryCompare - hufanya ulinganisho wa binary (chaguo-msingi)
  • 1 = vbTextCompare - hufanya ulinganisho wa maandishi

mfano

Ongeza kitufe na uweke kitendakazi kifuatacho.

Private Sub Constant_demo_Click() var = "Microsoft VBScript" msgbox("Line 1: " & InStrRev(var,"s",10)) msgbox("Line 2: " & InStrRev(var,"s",7)) msgbox ("Mstari wa 3: " & InStrRev(var,"f",-1,1)) msgbox("Mstari wa 4: " & InStrRev(var,"t",5)) msgbox("Mstari wa 5: " & InStrRev( var,"i",7)) msgbox("Mstari wa 6: " & InStrRev(var,"i",7)) msgbox("Mstari wa 7: " & InStrRev(var,"VB",1)) Mwisho Sub

Baada ya kutekeleza hati iliyo hapo juu, hutoa matokeo yafuatayo.

Mstari wa 1:6
Mstari wa 2: 6
Mstari wa 3:8
Mstari wa 4:0
Mstari wa 5:2
Mstari wa 6:2
Mstari wa 7:0

Hurejesha tukio la kwanza la kamba ndogo iliyobainishwa. Utafutaji hutokea kutoka kulia kwenda kushoto.

KESI

Chaguo za kukokotoa za LCase hurejesha mfuatano baada ya kubadilisha mfuatano wa ingizo kuwa herufi ndogo.

Sintaksia

Kesi(Kamba)

mfano

Private Sub Constant_demo_Click() var = "Microsoft VBScript" msgbox("Line 1: " & LCase(var)) var = "MS VBSCRIPT" msgbox("Mstari wa 2: " & LCase(var)) var = "microsoft" msgbox( "Mstari wa 3: " & LCase(var)) Maliza Kidogo

Mstari wa 1: Microsoft vbscript
Mstari wa 2: ms vbscript
Mstari wa 3: Microsoft

Hurejesha herufi ndogo ya mfuatano uliobainishwa.

UCase

Chaguo za kukokotoa za UCase hurejesha mfuatano baada ya kubadilisha mfuatano wa ingizo kuwa herufi JUU.

Sintaksia

UCase(String)

mfano

Ongeza kitufe na uweke kitendakazi kifuatacho ndani yake.

Private Sub Constant_demo_Click() var = "Microsoft VBScript" msgbox("Line 1: " & UCase(var)) var = "MS VBSCRIPT" msgbox("Mstari wa 2: " & UCase(var)) var = "microsoft" msgbox( "Mstari wa 3: " & UCase(var)) Maliza Kidogo

Baada ya kutekeleza hati iliyo hapo juu, hutoa matokeo yafuatayo.

Mstari wa 1: MICROSOFT VBSCRPT
Mstari wa 2: MS VBSCRPT
Mstari wa 3: MICROSOFT

Hurejesha herufi kubwa ya mfuatano uliobainishwa.

Kushoto

Chaguo za kukokotoa za Kushoto hurejesha nambari maalum ya vibambo kutoka upande wa kushoto wa mfuatano uliotolewa wa ingizo.

Sintaksia

Kushoto (Kamba, Urefu)

Maelezo ya Kigezo

  • Kamba ni kigezo kinachohitajika. Mfuatano wa ingizo ambapo idadi maalum ya vibambo inapaswa kurejeshwa kwenye upande wa kushoto.
  • Urefu ni kigezo kinachohitajika. Nambari kamili inayobainisha idadi ya herufi zitakazorejeshwa.

mfano

Ongeza kitufe na ongeza kitendakazi kifuatacho.

Private Sub Constant_demo_Click() Dim var as Variant var = "Microsoft VBScript" msgbox("Mstari wa 1: " & Left(var,2)) var = "MS VBSCRIPT" msgbox("Mstari wa 2: " & Kushoto(var,5) ) var = "microsoft" msgbox("Mstari wa 3: " & Kushoto(var,9)) Maliza Sub

Unapotekeleza kazi iliyo hapo juu, hutoa matokeo yafuatayo.

Mstari wa 1: Mi
Mstari wa 2: MS VB
Mstari wa 3: Microsoft

Hurejesha nambari iliyobainishwa ya vibambo kutoka upande wa kushoto wa mfuatano.

Sawa

Chaguo za kukokotoa za Kulia hurejesha nambari maalum ya vibambo kutoka upande wa kulia wa mfuatano uliotolewa wa ingizo.

Sintaksia

Kulia (Kamba, Urefu)

Maelezo ya Kigezo

  • Kamba ni kigezo kinachohitajika. Mfuatano wa ingizo ambapo idadi maalum ya vibambo inapaswa kurejeshwa kwenye upande wa kulia.
  • Urefu ni kigezo kinachohitajika. Nambari kamili inayobainisha idadi ya herufi zitakazorejeshwa.

mfano

Ongeza kitufe na ongeza kitendakazi kifuatacho.

Private Sub Constant_demo_Click() var = "Microsoft VBScript" msgbox("Mstari wa 1: " & Right(var,2)) var = "MS VBSCRIPT" msgbox("Mstari wa 2: " & Right(var,5)) var = " microsoft" msgbox("Mstari wa 3: " & Kulia(var,9)) Komesha Ndogo

Unapotekeleza kazi iliyo hapo juu, hutoa matokeo yafuatayo.

Mstari wa 1: pt
Mstari wa 2: CRIPT
Mstari wa 3: Microsoft

Hurejesha nambari iliyobainishwa ya vibambo kutoka upande wa kulia wa mfuatano.

Kati

Kitendakazi cha Mid hurejesha idadi maalum ya vibambo kutoka kwa mfuatano uliopeanwa wa ingizo.

Sintaksia

Kati(Kamba,anza[,Urefu])

Maelezo ya Kigezo

  • Kamba ni kigezo kinachohitajika. Mfuatano wa ingizo ambapo idadi ya herufi zitakazorejeshwa imebainishwa.
  • Anza - parameter inayohitajika. Nambari kamili inayobainisha nafasi ya kuanzia ya mstari.
  • Urefu ni kigezo cha hiari. Nambari kamili inayobainisha idadi ya herufi zitakazorejeshwa.

Ongeza kitufe na ongeza kitendakazi kifuatacho.

Private Sub Constant_demo_Click() Dim var as Variant var = "Microsoft VBScript" msgbox("Mstari wa 1: " & Mid(var,2)) msgbox("Mstari wa 2: " & Mid(var,2,5)) msgbox(" Mstari wa 3: " & Mid(var,5,7)) Maliza Kidogo

Unapotekeleza kazi iliyo hapo juu, hutoa matokeo yafuatayo.

Mstari wa 1: icrosoft VBScript
Mstari wa 2: ikros
Mstari wa 3:osoft V

Hurejesha idadi maalum ya vibambo kutoka kwa mfuatano kulingana na vigezo vilivyobainishwa.

Ltrim

Chaguo za kukokotoa za Ltrim huondoa nafasi kutoka upande wa kushoto wa kamba.

Sintaksia

Ltrim(Kamba)

mfano

Ongeza kitufe na ongeza kitendakazi kifuatacho.

Private Sub Constant_demo_Click() Dim var as Variant var = " Microsoft VBScript" msgbox "After Ltrim: " & LTrim(var) End Sub

Unapofanya kazi, hutoa matokeo yafuatayo.

Baada ya Ltrim: Microsoft VBScript

Hurejesha mfuatano baada ya kuondoa nafasi kutoka upande wa kushoto wa mfuatano uliobainishwa.

Rtrim

Chaguo za kukokotoa za Rtrim huondoa nafasi kutoka upande wa kulia wa mfuatano.

Sintaksia

Rtrim(Kamba)

mfano

Ongeza kitufe na ongeza kitendakazi kifuatacho.

Private Sub Constant_demo_Click() Dim var as Variant var = "Microsoft VBScript " msgbox("After Rtrim: " & Rtrim(var)) Maliza Sub

Unapotekeleza kazi iliyo hapo juu, hutoa matokeo yafuatayo.

Baada ya Rtrim: Microsoft VBScript

Hurejesha mfuatano baada ya kuondoa nafasi kutoka upande wa kulia wa mfuatano uliobainishwa.

Punguza

Kitendakazi cha Kupunguza huondoa nafasi nyeupe inayoongoza na inayofuata kutoka kwa mfuatano uliopeanwa.

Sintaksia

Punguza (Kamba)

mfano

Ongeza kitufe na ongeza kitendakazi kifuatacho.

Private Sub Constant_demo_Click() var = "Microsoft VBScript" var = "Microsoft VBScript" msgbox ("Baada ya Kupunguza: " & Trim(var)) Maliza Sub

Unapotekeleza kazi iliyo hapo juu, hutoa matokeo yafuatayo.

Baada ya trim: Microsoft VBScript

Hurejesha thamani ya mfuatano baada ya kuondoa nafasi zinazoongoza na zinazofuata.

Len

Chaguo za kukokotoa za Len hurejesha urefu wa mfuatano uliotolewa wa ingizo, ikijumuisha nafasi.

Sintaksia

Leni(Kamba)

mfano

Ongeza kitufe na ongeza kitendakazi kifuatacho.

Private Sub Constant_demo_Click() Dim var1 kama Variant Dim var2 as Variant var1="Microsoft VBScript" msgbox("Urefu wa var1 ni: " & Len(var1)) var2 = " Microsoft VBScript " msgbox ("Urefu wa var2 ni: " & Len(var2)) Maliza Sub

Unapotekeleza kazi iliyo hapo juu, hutoa matokeo yafuatayo.

Urefu wa var1 ni: 18
Urefu wa var2 ni: 36

Hurejesha urefu wa mfuatano uliotolewa.

Badilisha

Chaguo la kukokotoa la Badilisha huchukua nafasi ya sehemu maalum ya mfuatano na mfuatano maalum idadi maalum ya nyakati.

Sintaksia

Badilisha (kamba, tafuta, badilisha na[,anza[,hesabu[,linganisha]]])

Maelezo ya Kigezo

  • Kamba ni kigezo kinachohitajika. Mfuatano wa ingizo wa kutafuta kuchukua nafasi.
  • Pata - parameter inayohitajika. Sehemu ya kamba ambayo itabadilishwa.
  • Replacewith ni kigezo kinachohitajika. Kamba ya uingizwaji ambayo itabadilishwa na parameta ya kupata.
  • Anza ni kigezo cha hiari. Hubainisha mahali pa kuanzia ambapo utatafuta na kubadilisha mfuatano. Thamani chaguo-msingi ni 1.
  • Hesabu ni kigezo cha hiari. Hubainisha idadi ya mara uingizwaji unapaswa kufanywa.
  • Linganisha - Hiari parameter. Hubainisha mbinu ya ulinganisho itakayotumika. Thamani chaguo-msingi ni 0.
  • 0 = vbBinaryCompare - hufanya ulinganisho wa binary
  • 1 = vbTextCompare - hufanya ulinganisho wa maandishi

mfano

Private Sub Constant_demo_Click() Dim var as Variant var = "Hii ni VBScript Programming" "VBScript itabadilishwa na MS VBScript msgbox("Line 1: " & Replace(var,"VBScript","MS VBScript")) "VB hadi kubadilishwa na vb msgbox("Mstari wa 2: " & Replace(var,"VB","vb")) ""ni" nafasi yake kuchukuliwa na ## msgbox("Mstari wa 3: " & Replace(var,"is"), ##")) ""ni" nafasi yake kuchukuliwa na ## inapuuza herufi kabla ya kutokea kwa msgbox("Mstari wa 4: " & Replace(var,"is","##",5)) ""s" inabadilishwa. kwa ## kwa matukio 2 yanayofuata msgbox("Mstari wa 5: " & Replace(var,"s","##",1,2)) ""r" inabadilishwa na ## kwa ulinganisho wa maandishi yote.

Unapotekeleza kazi iliyo hapo juu, hutoa matokeo yafuatayo.

msgbox("Mstari wa 6: " & Replace(var,"r","##",1,-1,1)) ""t" inabadilishwa na ## kwa matukio yote msgbox ya ulinganifu wa binary("Mstari wa 7: " & Badilisha (var,"t","##",1,-1,0)) Maliza Kidogo
Mstari wa 1: Hii ni MS VBScript Programming
Mstari wa 2: Hii ni vbScript Programming
Mstari wa 4: ## VBScript Programming
Mstari wa 5: Thi## i## VBScript Programming
Mstari wa 6: Hii ni VBSc##ipt P##og##amming
Mstari wa 7: Hii ni VBScrip## Programming

Hurejesha mfuatano baada ya kubadilisha mfuatano na mfuatano mwingine.

Nafasi

Chaguo za kukokotoa za Nafasi hujaza mfuatano na idadi maalum ya nafasi.

Sintaksia

nafasi (nambari)

Maelezo ya Kigezo

Nambari - parameter inayohitajika. Idadi ya nafasi tunazotaka kuongeza kwenye mfuatano huu.

mfano

Private Sub Constant_demo_Click() Dim var1 as Variant var1 = "Microsoft" Dim var2 as Variant var2 = "VBScript" msgbox(var1 & Space(2)& var2) End Sub

Unapotekeleza kazi iliyo hapo juu, hutoa matokeo yafuatayo.

Microsoft VBScript

Hujaza mfuatano na idadi maalum ya nafasi.

StrComp

Chaguo za kukokotoa za StrComp hurejesha thamani kamili baada ya kulinganisha mifuatano miwili uliyopewa. Inaweza kurejesha thamani yoyote kati ya tatu -1, 0 au 1 kulingana na mifuatano ya ingizo ili kulinganisha.

  • Ikiwa String1 ni chini ya String2, basi StrComp inarudi -1
  • Ikiwa String1 ni sawa na String2 basi StrComp inarudisha 0
  • Ikiwa String1 ni kubwa kuliko String2, basi StrComp inarudisha 1

Sintaksia

StrComp(string1,string2[,compare])

Maelezo ya Kigezo

  • String1 ndio kigezo kinachohitajika. Usemi wa mfuatano wa kwanza.
  • String2 ni kigezo kinachohitajika. Usemi wa mfuatano wa pili.
  • Linganisha - Hiari parameter. Inabainisha ulinganisho wa mfuatano. Inaweza kuchukua maadili yafuatayo.
  • 0 = vbBinaryCompare - hufanya ulinganisho wa binary (chaguo-msingi)
  • 1 = vbTextCompare - hufanya ulinganisho wa maandishi

mfano

Ongeza kitufe na ongeza kitendakazi kifuatacho.

Private Sub Constant_demo_Click() Dim var1 as Variant msgbox("Line 1:" & StrComp("Microsoft","Microsoft")) msgbox("Line 2:" &StrComp("Microsoft","MICROSOFT")) msgbox("Mstari" 3:" &StrComp("Microsoft","MiCrOsOfT")) msgbox("Mstari wa 4:" &StrComp("Microsoft","MiCrOsOfT",1)) msgbox("Mstari wa 5:" &StrComp("Microsoft","MiCrOsOfT" ,0)) Maliza Sub

Unapotekeleza kazi iliyo hapo juu, hutoa matokeo yafuatayo.

Mstari wa 1:0
Mstari wa 2:1
Mstari wa 3:1
Mstari wa 4:0
Mstari wa 5:1

Hurejesha thamani kamili baada ya kulinganisha mifuatano miwili iliyobainishwa.

Kamba

Kitendakazi cha Kamba hujaza mfuatano na herufi maalum kwa idadi maalum ya nyakati.

Sintaksia

Mfuatano (nambari, herufi)

Maelezo ya Kigezo

  • Nambari - parameter inayohitajika. Thamani kamili ambayo itarudiwa kwa idadi maalum ya nyakati dhidi ya kigezo cha herufi.
  • Ishara ni parameter inayohitajika. Thamani ya mhusika ambayo lazima irudiwe idadi fulani ya nyakati.

mfano

Ongeza kitufe na ongeza kitendakazi kifuatacho.

Private Sub Constant_demo_Click() msgbox("Line 1:" & String(3,"$")) msgbox("Mstari wa 2:" & String(4,"*")) msgbox("Mstari wa 3:" & String(5,100 )) msgbox("Mstari wa 4:" & Kamba(6,"ABCDE")) Maliza Kidogo

Unapotekeleza kazi iliyo hapo juu, hutoa matokeo yafuatayo.

Mara nyingi mistari katika programu huwa na nafasi zisizo za lazima mwishoni au mwanzoni mwa mstari unaohitaji kuondolewa kwa sababu nafasi za nje zinazoongoza au zinazofuata kwenye mstari zinaweza kusababisha matatizo na programu.

VBA ina vipengele vitatu vilivyoundwa ili kuondoa nafasi zinazoongoza na zinazofuata kutoka kwa mfuatano: Ltrim, Rtrim, Trim. Kumbuka kwamba chaguo hizi za kukokotoa hazibadilishi mfuatano halisi, lakini badala yake urejeshe nakala ya mfuatano na nafasi za ziada zikiondolewa.

Kuamua Urefu wa Kamba

Kwa kawaida unahitaji kujua urefu wa mfuatano unapoumbiza ujumbe kwa mtumiaji au unapoumbiza data ya mfuatano iliyoingizwa kwa utaratibu kwenye lahakazi ya Excel au hati ya Neno. VBA hutumia chaguo la kukokotoa kwa madhumuni haya Len. Katika orodha iliyo hapa chini, kuna nafasi mbili kati ya mabano na neno.



Unapaswa kuwa mwangalifu na kamba za urefu uliowekwa. Kwa sababu mfuatano wa urefu usiobadilika huwa na urefu sawa kila mara, chaguo la kukokotoa la Len hurejesha urefu uliotangazwa wa mfuatano huo, bila kujali urefu halisi wa mfuatano huo. Kwa mfano, ikiwa kamba ya urefu usiobadilika StrokeName, ambayo ina urefu wa vibambo 15, ina neno "jua", basi chaguo la kukokotoa. Len(Jina la Kiharusi) itarudi matokeo 15. Katika kesi hii, ili kujua urefu halisi wa kamba (kwa upande wetu - 6), unahitaji kutumia mchanganyiko wafuatayo wa kazi: Len(Punguza(StrokeName)).

Kulinganisha na kutafuta kamba

VBA ina kazi mbili zinazokusaidia kulinganisha kamba: StrComp, InStr.

Kazi ya StrComp

Sintaksia


StrComp(String1, String2[, Linganisha])


String1, String2 - usemi wowote wa kamba mbili ambao unahitaji kulinganishwa.

Wakati StrComp inatekelezwa, moja ya maadili yafuatayo yanarejeshwa:

  • -1 ikiwa String1 ni chini ya String2;
  • 0 ikiwa String1 na String2 ni sawa;
  • 1 ikiwa String1 ni kubwa kuliko String2.


Orodha iliyo hapo juu inalinganisha mifuatano miwili katika hali ya maandishi: "Kamba Chaguomsingi" na "Kamba Chaguomsingi". Matokeo ya kulinganisha = 1, i.e. "Kamba Chaguomsingi" ni kubwa kuliko "Kamba Chaguomsingi".

Jaribu kwa aina mbalimbali za mifuatano ili kuelewa vyema jinsi utendaji kazi wa StrComp unavyofanya kazi.

Kazi ya InStr

Chaguo za kukokotoa za InStr hukuruhusu kubaini ikiwa mfuatano mmoja una mfuatano mwingine.

Sintaksia


StrComp(String1, String2[, Linganisha])


String1, String2 - maneno yoyote halali ya kamba. Chaguo la kukokotoa hukagua ikiwa String1 iko kwenye String2.

Linganisha ni hoja ya hiari ambayo inaweza kuwa mojawapo ya vifungu vifuatavyo vilivyofafanuliwa awali (ikiwa imeachwa, mpangilio wa sasa wa Chaguo la Kulinganisha unatumika):

  • vbBinaryCompare - kulinganisha binary ya masharti mawili;
  • vbTextCompare - kulinganisha maandishi ya masharti mawili;
  • vbDatabaseCompare - inatumika tu katika Upataji wa Microsoft.

Anza - hoja ya hiari, ni usemi wa nambari na inabainisha nafasi ya mhusika katika String1 ambayo hundi inapaswa kuanza.


InStr hurejesha nambari inayoonyesha nafasi ya mhusika katika String1 ambapo String2 ilipatikana. Ikiwa InStr haipati String2 katika String1, basi 0 inarudishwa Ikiwa String1 (au String2) ni Null, basi chaguo la kukokotoa pia linarudisha Null.



Kugawanyika kwa mstari

Wakati mwingine inakuwa muhimu kugawanya kamba katika sehemu zake za sehemu. Katika VBA, kazi tatu hutatua tatizo hili: Kushoto, Kulia, Kati.

Kitendaji cha kushoto

Sintaksia


Kushoto (Kamba, Urefu)


Chaguo la kukokotoa hurejesha nakala ya Kamba, kuanzia na herufi ya kwanza na kujumuisha idadi ya herufi zilizobainishwa na Urefu. Ikiwa Urefu ni nambari kubwa kuliko urefu halisi wa Mfuatano, basi usemi wote wa Kamba hurejeshwa.

Utendakazi wa kulia

Sintaksia


Kulia (Kamba, Urefu)


Mfuatano ni usemi wowote halali wa mfuatano.

Urefu - thamani yoyote ya nambari.


Kazi inarudisha nakala ya Kamba, kuanzia na herufi ya mwisho na ikijumuisha, kutoka kulia kwenda kushoto, idadi ya herufi zilizoainishwa na Urefu. Ikiwa Urefu ni nambari kubwa kuliko urefu halisi wa Mfuatano, basi usemi wote wa Kamba hurejeshwa. Kitendaji cha Kulia kila mara hunakili herufi kutoka mwisho wa mfuatano hadi mwanzo.

Kitendaji cha kati

Sintaksia


Kati (Kamba, Anza, [, Urefu])


Mfuatano ni usemi wowote halali wa mfuatano.

Urefu, Anza - maadili yoyote ya nambari.


Chaguo la kukokotoa la Mid hurejesha nakala ya Kamba kuanzia kwenye nafasi ya herufi katika Kamba iliyobainishwa na hoja ya Anza. Hoja ya hiari ya Urefu hubainisha idadi ya vibambo vya kunakili kutoka kwa Kamba hadi Kati. Ikiwa Anza ina nambari kubwa kuliko urefu halisi wa Kamba, basi mfuatano tupu unarudishwa.



Herufi ambazo haziwezi kuingizwa kutoka kwa kibodi

Mara nyingi hutokea kwamba unahitaji kuingiza tabia ambayo hakuna ufunguo kwenye kibodi (kwa mfano, ishara ya hakimiliki). Hali nyingine ni wakati unahitaji kuingiza tabia ya huduma ya VBA kwenye kamba (kesi ya kawaida ni kuingizwa kwa nukuu mbili).

Ili kujumuisha herufi kwenye mfuatano ambao hauwezi kuingizwa kutoka kwa kibodi, au ambao una maana maalum kwa VBA, tumia chaguo la kukokotoa. Chr.

Sintaksia


Chr (Chati)


Charcode - usemi wowote wa nambari ambao ni msimbo halali wa herufi iliyowekwa na kompyuta. Lazima iwe nambari kamili kati ya 0 na 255.

Chaguo za kukokotoa za Chr huchukua msimbo wa herufi moja kama hoja na hurejesha mfuatano ulio na herufi inayolingana na msimbo huo. Chaguo hili la kukokotoa linatumika katika uorodheshaji hapo juu kulisha laini wakati wa kuonyesha ujumbe kwenye skrini Chr (13).


Kwa sababu herufi zinazotumiwa kuanzisha laini mpya ni muhimu sana wakati wa kuumbiza ujumbe na data nyingine ya mfuatano inayotumiwa na taratibu za VBA, kuna viambishi kadhaa vilivyobainishwa awali kwa herufi hizi ili kuepusha hitaji la kutumia chaguo la kukokotoa la Chr:

  • vbCr ni tabia ya kurejesha gari. Sawa na Chr(13)
  • vbLf - kurekebisha tabia kwa mstari mmoja. Sawa na Chr(10)
  • vbCrLf - kurudi kwa gari + kurekebisha tabia kwa mstari mmoja. Sawa na Chr(13)+ Chr(10)
  • vbTab - tabia ya kichupo. Chr(9) sawa

Ili kutazama orodha alama ya msimbo unahitaji kufungua mfumo wa usaidizi wa VBA na kwa ombi "seti za wahusika" meza sambamba itawasilishwa.



Uumbizaji wa Maadili ya Data

Mara nyingi sana, kwa sababu moja au nyingine, muundo wa data katika matokeo ya programu haufai kabisa. Tatizo hili linatatuliwa na kazi Umbizo.

Kitendakazi cha Umbizo la VBA kinafanana na kitendakazi cha Umbizo katika Excel na hutumia vishika nafasi sawa vya uumbizaji wa data.

Sintaksia


Umbizo (Usemi [, Umbizo[, Firstdayofweek [, Firstweekofyear]]])


Usemi - usemi wowote halali (hoja inayohitajika).

Umbizo ni usemi halali wa umbizo lililotajwa au lililobainishwa na mtumiaji.

Firstdayofweek ni toleo lisilobadilika ambalo hubainisha siku ya kwanza ya juma.

Firstweekofyear - mara kwa mara ambayo hufafanua wiki ya kwanza ya mwaka.


Ili kutumia kitendakazi cha Umbizo, lazima pia weka umbizo lililofafanuliwa awali, au tengeneza picha ya muundo maalum, kwa kutumia vibambo vya kishika nafasi.


Miundo iliyopewa jina kwa ajili ya matumizi na kitendakazi cha Umbizo

Umbizo lililopewa jina Kitendo
Tarehe ya Jumla Huumbiza maelezo ya tarehe na saa kuwa nambari ya tarehe inayofuatana kwa kutumia mipangilio ya umbizo la tarehe na saa ya kompyuta yako.
Tarehe ndefu Huumbisha tu sehemu ya tarehe katika tarehe ya mfuatano, kwa kutumia mipangilio ya umbizo la Muda mrefu la kompyuta.
Tarehe ya Kati Huumbisha tu sehemu ya tarehe kama tarehe ya mfuatano, kwa kutumia mipangilio ya umbizo la tarehe ya Kati ya kompyuta yako.
Tarehe fupi Huumbisha tu sehemu iliyo na tarehe katika tarehe ya mfuatano, kwa kutumia mipangilio ya kompyuta kwa umbizo la tarehe Fupi.
Muda Mrefu Huumbisha tu sehemu ya saa katika tarehe ya mfuatano, kwa kutumia mipangilio ya umbizo la Muda mrefu la kompyuta.
Muda wa Kati Huumbisha tu sehemu ya saa katika tarehe ya mfuatano, kwa kutumia mipangilio ya umbizo la Muda wa Kati ya kompyuta.
Muda Mfupi Huumbisha tu sehemu ya saa katika tarehe ya mfuatano, kwa kutumia mipangilio ya kompyuta kwa umbizo la Muda mfupi.
Nambari ya Jumla Hubadilisha nambari kuwa mfuatano bila vibambo maalum.
Sarafu Hubadilisha nambari kwa ishara ya sarafu, kitenganishi cha maelfu, na sehemu mbili pekee za desimali.
Imerekebishwa Huumbiza nambari ili kila mara kuwe na angalau tarakimu moja kabla ya nukta ya desimali na angalau tarakimu mbili baada yake.
Kawaida Hubadilisha nambari kwa kutumia kitenganishi cha maelfu ili kuwe na angalau tarakimu moja kabla ya kitenganishi cha desimali na angalau tarakimu mbili baada yake.
Asilimia Hubadilisha nambari kama asilimia kwa kuizidisha kwa 100 na kuongeza alama ya asilimia.
Kisayansi Hubadilisha nambari kuwa umbizo la kawaida la kielelezo.
Ndiyo/Hapana Kamba "Ndiyo" inarejeshwa ikiwa nambari iliyoumbizwa sio sifuri, vinginevyo - "Hapana".
Kweli/Uongo Kamba "Kweli" inarejeshwa ikiwa nambari iliyoumbizwa sio sifuri, vinginevyo - "Uongo".
Washa/Zima Kamba "Imewashwa" inarejeshwa ikiwa nambari iliyoumbizwa sio sifuri, vinginevyo - "Zima".

Vishika nafasi vya kuunda miundo maalum

Kishikilia nafasi Kitendo (kwa kutumia nambari 1234.45 kama mfano)
0 Herufi ya nambari inayoonyesha tarakimu ikiwa moja iko katika nafasi hiyo, au 0 ikiwa sivyo. Unaweza kutumia alama 0 kuonyesha sufuri zinazoongoza kwa nambari kamili na sufuri zinazofuata kwa desimali: 00000.000 maonyesho 01234.450
# Alama ya nambari huonyesha tarakimu ikiwa kuna moja katika nafasi hii, vinginevyo haionyeshi chochote. Herufi ya # kichujio ni sawa na 0, isipokuwa sufuri zinazoongoza na zinazofuata hazionyeshwa: #####.### maonyesho 1234.45
$ Inaonyesha alama ya dola: $###,###.00 inaonyesha $1,234.45
. Herufi ya kishikilia nafasi ya decimal, huonyesha nukta ya desimali katika nafasi iliyoteuliwa katika mfuatano wa kishikilia nafasi 0: #.##.## maonyesho 1234.45
% Asilimia ya alama, huzidisha thamani kwa 100 na kuongeza ishara ya asilimia katika nafasi iliyoonyeshwa na vishikilia nafasi 0:#.#0.00% huonyesha nambari 0.12345 kama 12.35% (kuzungusha hutokea)
, Maelfu ya kitenganishi, huongeza koma kama maelfu ya vitenganishi katika mifuatano ya 0 na # ya kishikilia nafasi: ###,###,###.00 maonyesho 1,234.45
E-e- Huonyesha thamani katika umbizo la kielelezo na kipeo cha thamani hasi pekee: #.####E-00 maonyesho 1.23445E03
E+ e+ Huonyesha thamani katika umbizo la kielelezo kwa kipeo cha thamani hasi na chanya: #.####E+00 maonyesho 1.23445E+03
/ Hutenganisha siku, mwezi na mwaka kwa uumbizaji wa thamani za tarehe.
m Inabainisha jinsi ya kuonyesha miezi katika tarehe: m maonyesho 1, mm - 01, mmm - Jan, mmmm - Januari
d Inabainisha jinsi ya kuonyesha siku katika tarehe: d maonyesho 1, dd - 01, ddd - Sun, dddd - Jumapili
y Huonyesha siku ya mwaka kama nambari kutoka 1 hadi 366
yy Inabainisha jinsi ya kuonyesha miaka katika tarehe: yy - 66, yyyy - 1966
q Inaonyesha robo ya mwaka kama nambari kutoka 1 hadi 4
w Inaonyesha siku ya juma kama nambari (1 - Jumapili)
ww Inaonyesha wiki ya mwaka kama nambari kutoka 1 hadi 54
: Hutenganisha saa, dakika na sekunde katika thamani za umbizo la saa: hh:mm:ss - 01:01:01, h:m:s - 1:1:1
h Inabainisha jinsi ya kuonyesha saa: hh - 01, h - 1
m Inabainisha jinsi ya kuonyesha dakika: mm - 01, m - 1
s Inabainisha jinsi ya kuonyesha sekunde: ss - 01, s - 1
AM/PM Inaonyesha muda katika umbizo la saa 12 huku AM au PM ikiongezwa
@ Kishika nafasi cha herufi ambacho kinaonyesha nafasi ikiwa hakuna herufi inayolingana katika mfuatano ulioumbizwa.
Huonyesha herufi zote kwa herufi kubwa.
> Huonyesha herufi zote kwa herufi ndogo.

Katika makala hii tutaangalia kwa ufupi kazi za kamba za lugha ya VBA, ambazo hutumiwa kuunda kamba, na pia kuruhusu kubadilisha kesi ya wahusika, kuonyesha maadili ya kamba kwa kanuni zao, na kadhalika.

ASC (thamani ya kamba)- hutumika kupata nambari ya nambari ya ASCII ya herufi fulani. Unaweza kupitisha kamba nzima kama parameta (cheki itatokea kwa herufi ya kwanza kwenye safu), au herufi moja au nafasi.

Chr (msimbo wa herufi)- inafanya kazi kwa mpangilio wa nyuma ikilinganishwa na chaguo la kukokotoa la awali. Tunapitisha nambari ya ASCII kama parameta, na kwa pato tunapokea mhusika kulingana na nambari iliyopewa. Kitendaji hiki cha kamba kinafaa katika hali ambapo unahitaji kuonyesha mhusika wa huduma, kwa mfano, nukuu, ingawa mara nyingi huitwa viunga vya VBA hutumiwa.

InStr(line1, line2, [anza])- iliyoundwa kutafuta mlolongo wa herufi (mstari 2) katika safu fulani (mstari 1). Unaweza pia kutaja nafasi ya kuanzia kwa ajili ya kutafuta tukio (hiari "kuanza" parameter).

InStrRev(line1, line2, [anza])- sawa na kazi ya awali, lakini utafutaji hutokea kwa utaratibu wa nyuma.

Kushoto (kamba, urefu)- inakuwezesha kurudi idadi maalum ya wahusika (parameter "urefu") kwa mstari uliochaguliwa ("kamba" parameter), kuanzia kushoto.

Kulia (kamba, urefu)- hukuruhusu kurudisha idadi maalum ya wahusika kwa mstari uliochaguliwa, kuanzia kulia.

Kati (kamba, urefu, kuanza)- inakuwezesha kurudi idadi maalum ya wahusika (parameter "urefu") kwa mstari uliochaguliwa, kuanzia nafasi maalum ("kuanza" parameter).

Len (kamba)- huamua nambari ya nambari ya wahusika kwenye mstari.

LCase (kamba)- imeundwa kubadilisha herufi zote kwenye mfuatano uliopitishwa kuwa herufi ndogo.

UCase (kamba)- imeundwa kubadili herufi zote kwenye mfuatano uliopitishwa kuwa herufi kubwa.

Lset (kamba, urefu)- hujaza yaliyomo kwenye kibadilishaji na herufi kutoka kwa kigezo kingine kuanzia kushoto, urefu haubadiliki, herufi za ziada zitakatwa, na nafasi zitabadilishwa kwa zinazokosekana.

Weka upya (kamba, urefu)- mantiki ya uendeshaji ni sawa na kazi ya awali ya VBA ya kufanya kazi na masharti, lakini mchakato hutokea kwa haki.

Ltrim (kamba)- ondoa nafasi upande wa kushoto kwenye mstari

Rtrim (kamba)- ondoa nafasi kwenye upande wa kulia wa mstari

Punguza (kamba)- ondoa nafasi upande wa kulia na kushoto kwenye mstari

Badilisha ()- kubadilisha baadhi ya wahusika katika kamba na wengine

Nafasi (idadi ya nafasi)- kuunda kamba kutoka kwa idadi maalum ya nafasi

Kamba (hesabu, tabia)- uundaji wa kamba kutoka kwa idadi fulani ya herufi zilizoandikwa

spc()- hutumika kutoa pato la data kwenye dirisha la koni ya mstari wa amri. Nafasi zinazidishwa kulingana na upana wa mstari wa amri.

StrComp(line1, line2)- kulinganisha kwa mifuatano miwili, inarudisha 0 ikiwa ni sawa, na -1 vinginevyo.

StrConv(kamba, mbinu,)- kazi hii ya vba ni ya ulimwengu wote, kwani inakuwezesha kubadilisha kamba iliyotolewa katika tofauti mbalimbali (kesi ya juu na ya chini, encoding, tafsiri ya byte).

  • Mstari- kwa kweli, thamani ya kamba ambayo mabadiliko yanahitajika kufanywa.
  • Mbinu- inabainisha njia ya uongofu; parameta hii inaweza kuchukua maadili yafuatayo:
  1. vbUpperCase- ubadilishaji kuwa herufi kubwa, thamani 1
  2. vbLowerCase- ubadilishaji kuwa herufi ndogo, thamani 2
  3. vbPropperCase- hubadilisha herufi za kwanza za maneno yote kuwa herufi kubwa, na herufi zilizobaki kuwa herufi ndogo, thamani ya 3.
  4. vbPana- hutumika kwa kusimba lugha za mashariki. Kubadilisha herufi kuwa baiti moja kutoka kwa baiti mbili. Thamani ya 4.
  5. vbNyembamba- sawa na parameta iliyopita, lakini hapa byte mbili zinabadilishwa kuwa moja, thamani 8.
  6. vbKatakana- herufi za alfabeti ya Hiragana hubadilishwa kuwa herufi za alfabeti ya Katana, inayotumika kwa lugha ya Kijapani, thamani ya 16.
  7. vbHiragana- sawa na parameter iliyopita, lakini hapa aina ya Katana hadi Hiragana inabadilishwa, thamani ya 32. Kazi za kamba za VBA
  8. vbUnicode- Badilisha kamba uliyopewa kuwa usimbaji wa Unicode, thamani 64.
  9. vbFormatUnicode- ubadilishaji kutoka kwa Unicode hadi usimbaji wa kawaida, thamani 128.
  • LCID- parameta ni ya hiari, (vitendo vya kamba ya vba) inabainisha kitambulisho cha mipangilio ya kikanda. Thamani chaguo-msingi ni LocaleId, yaani, thamani iliyowekwa kwenye paneli dhibiti.

StrReverse(kamba)- Geuza mpangilio wa wahusika katika mstari, kwa maneno mengine, "kioo".

Katika sehemu ya swali People, tafadhali eleza kwa undani maana ya chaguo za kukokotoa ord(x) na kinyume chake chr(x) katika Pascal? iliyotolewa na mwandishi Nick Brown jibu bora ni Kuna jedwali maalum la wahusika (nambari iliyopanuliwa ya ASCII, wakati kila mhusika ana thamani ya nambari, kwa jumla kuna maadili 255 kwenye jedwali, ambayo ni, kila mhusika amepewa nambari,
chr(0..254) hubadilisha nambari (baiti moja) kuwa herufi ambayo nambari hii ni yake, kwa mfano chr(71) matokeo yatakuwa herufi "G", pia kubonyeza vitufe kwenye kibodi hutoa msimbo wake, hii ndio nambari haswa inapowekwa kwenye mwendeshaji huyu na itatoa matokeo ambayo ufunguo unasisitizwa, ni mimi kwa mfano. Lakini mwendeshaji wa ORD(x) hufanya mchakato huu kwa mpangilio wa nyuma.
Tunaweka mhusika wa thamani na kupata nambari kutoka 0 hadi 254 (byte moja)
kwa mfano ORD("G") itatupa matokeo 71 (katika muundo wa desimali)
Hiyo ndiyo yote inaonekana !!!

Jibu kutoka Katyanachik[mpya]
Ni rahisi, kweli)
Ord ("X") - itarudisha msimbo wa tabia X kutoka kwa meza ya ASKII.
Matokeo ya kazi ya inverse itakuwa ishara inayofanana na msimbo ulioingia (ambayo kazi inachukuliwa) kutoka kwa meza sawa ya ASCII.


Jibu kutoka Juri[guru]
Hizi sio kazi za kuheshimiana!
Chaguo za kukokotoa za Ord hurejesha thamani ya mpangilio ya aina iliyoorodheshwa.
Hesabu huanza kutoka sifuri.
Kwa aina ya baiti, chaguo la kukokotoa litarudisha thamani halisi - nambari ya mpangilio inalingana na thamani.
Kwa aina ya char, kazi itarudisha nambari ya mlolongo wa mhusika, ambayo (nambari ni ya nasibu) inafanana na msimbo wa ASCII.
Chaguo za kukokotoa za chr hurejesha herufi na msimbo uliotolewa wa ASCII.
Hitimisho: Kwa urahisi, kuhusu maadili ya ishara, hufanya kazi kama kinyume cha kila mmoja ...
Kwa hiyo, tunaweza kusema kwamba kazi ya ord ni kinyume cha kazi ya chr, lakini si kinyume chake - kazi ya chr sio kinyume cha kazi ya ord, kwani upeo wa kazi ya ord sio mdogo kufanya kazi na alama!