Pierakstīties, izmantojot Microsoft
Pierakstieties vai izveidojiet kontu.
Sveicināti!
Atlasiet citu kontu.
Jums ir vairāki konti
Izvēlieties kontu, ar kuru vēlaties pierakstīties.

Ievads

Šajā rakstā paskaidrots, kā izmantot mainīgos Microsoft Excel microsoft Visual Basic for Applications apakšprocesos.

Papildinformācija

Mainīgie apakšprocesā

Jaudīgs programmēšanas valodu līdzeklis ir iespēja kaut ko glabāt mainīgajā, lai mainīgā saturu vēlāk procedūrā varētu izmantot vai mainīt. Šajā dokumentā aplūkota šāda mainīgo izmantošana programmā Visual Basic:

  • Kā tiek deklarēti mainīgie.

  • Procedūras un projekti, kas var izmantot mainīgo.

  • Mainīgā darbības laiks.

Mainīgā deklarēīšana makro

Vienkāršākais veids, kā makro izmantot mainīgo, ir izmantot priekšrakstu Dim. Nākamajā rindiņā divi mainīgie tiek paziņoti kā veseli skaitļi:

    Dim x As Integer, y As Integer

Ja kā veseli skaitļi ir norādīti x un y, jums jāliek pietikt ar atmiņas atiešanu no vesela skaitļa mainīgā (2 baiti x un y) un ka informācija Visual Basic, kas tiek glabāta x vai y, ir vesels skaitlis no -32768 līdz 32767.

PIEZĪME. Ja, izmantojot vienu priekšrakstu Dim, deklarējiet vairākus mainīgos, katram mainīgajam ir jānorāda datu tips.

Ja nav norādīts katra mainīgā datu tips, kā šajā Visual Basic kodā, tikai mainīgais y tiek iestatīts kā vesels skaitlis. Mainīgais x būs varianta tips:

    Dim x, y As Integer

Papildinformāciju skatiet tālāk sadaļā Datu tips Variant.
 

Lai veiktu mainīgu pārbaudi, veiciet tālāk norādītās darbības.

  1. Saglabājiet un aizveriet visas atvērtās darbgrāmatas un pēc tam atveriet jaunu darbgrāmatu.

  2. Startējiet lietojumprogrammu Visual Basic (nospiediet taustiņu kombināciju ALT+F11).

  3. Izvēlnē Ievietošana noklikšķiniet uz Modulis.

  4. Ierakstiet šādu kodu:

    Sub Variable_Test()
        Dim x Kā vesels skaitlis, y kā vesels skaitlis
        x = 10
        y = 100
        MsgBox "vērtība x ir " & x & _
        Chr(13) & "y vērtība ir " & y
    End Sub

  5. Palaidiet Variable_Test makro. Tiek parādīts šāds ziņojums:

    the value of x is 10
    the value of y is 100

  6. Noklikšķiniet uz Labi.

  7. Makro rindā Variable_Test šādu rindiņu:

    x = 10

  8. uz:

    x = "error"

  9. Palaidiet Variable_Test makro.

Tiks parādīta izpildes laika kļūda, jo "kļūda" nav vesels skaitlis un jūs mēģināt piešķirt šo virknes vērtību vesela skaitļa mainīgajam x.
 

Datu tipu kopsavilkums

Šādi ir bieži lietoti mainīgo datu tipi:

common variable data types

Variantu datu tips

Ja nenorādāt datu tipu, kad deklarēat mainīgo vai vispār nedeklarēt mainīgo, Visual Basic automātiski tiek norādīts šī mainīgā datu tips variant. Tālāk ir to mainīgo priekšrocības, kas tiek deklarēti kā šis datu tips:

  • Mainīgajos var būt virknes, datuma, laika, Būla vai skaitliskas vērtības.

  • Mainīgie var automātiski konvertēt tajos ietvertās vērtības.

Trūkumi ir tāds, ka varianta mainīgajiem nepieciešami vismaz 16 baiti atmiņas. Lielu procedūru vai sarežģītu moduļu gadījumā atmiņas 16 baiti var būt nozīmīgi.

Lai uzzinātu, kā tas darbojas Variable_Test makro, rīkojieties šādi:

Mainiet makro kodu uz Variable_Test:

Sub Variable_Test()
    Dim x, y
    x = "string"
    y = 1.23
    MsgBox "the value of x is " & x & _
    Chr(13) & "the value of y is " & y
End Sub

Palaidiet Variable_Test makro.

Kļūda netiks parādīta, jo varianta mainīgajiem x un y var piešķirt neko.

PIEZĪME. Varat arī iziet no šīs rindiņas, un makro joprojām darbosies, jo mainīgie x un y tiek uzskatīti par Variant datu tipiem:

    Dim x, y

Mainīgā tvērums

Ja deklarējot mainīgo, tas var būt vai nebūt redzams citiem makro tajā pašā modulī, citos moduļos vai citos projektos. Šī mainīgā pieejamība moduļos tiek dēvēta par tvērumu. Trīs tvēruma veidi ir procedūras līmenis, privātais moduļa līmenis un publiskais moduļa līmenis. Tvērums ir atkarīgs no tā, kā un kur tiek paziņots mainīgais vai mainīgie.

Procedūras līmeņa tvērums

Mainīgais ar procedūras līmeņa tvērumu netiek skatīts ārpus procedūras, kurā tas tiek deklarēts. Ja iestatāt vērtību mainīgajam, kam ir procedūras līmeņa tvērums, šī mainīgā saturu neredzēs citi makro.

Lai pārbaudītu, vai mainīgais ar procedūras līmeņa tvērumu nav redzams ārpus procedūras, kurā tas tiek deklarēts, veiciet šādas darbības:

  1. Ievietojiet jaunu moduli projektā.

  2. Šajā modulī ierakstiet abus šos makro:
      Sub Macro1() Dim x As Integer x = 10 MsgBox "x, as seen by Macro1 is " & x 'the next line runs Macro2 Macro2 End Sub Sub Macro2() MsgBox "x, as seen by Macro2 is " & x End Sub

  3. Palaidiet Makro1, un tiks parādīts šāds ziņojums:

    x, as seen by Macro1 is 10

  4. Noklikšķiniet uzLabi, un tiks parādīts šāds

    ziņojums:x, as seen by Macro2 is

  5. Noklikšķiniet uz Labi.

Makro2 nerāda mainīgā x vērtību, jo mainīgais x ir lokālais makro1.

Privātā un publiskā moduļa līmeņa tvērums

Varat definēt mainīgos moduļa deklarāciju sadaļā (moduļa augšā, virs visām apakšprocesiem) un iestatīt mainīgā tvērumu, izmantojot publisko priekšrakstu, lēma priekšrakstu vai priekšrakstu Privāts. Ja pirms mainīgā ievietosiet priekšrakstu Publisks, mainīgais būs pieejams visiem makro visos projekta moduļos. Ja pirms mainīgā ievietosiet priekšrakstu Dim vai private, mainīgais ir pieejams tikai makro modulī, kurā tiek deklarēts.

Lai skatītu atšķirību starp priekšrakstu Public un Dim priekšrakstu, veiciet tālāk norādītās darbības.

  1. Saglabājiet un aizveriet visas atvērtās darbgrāmatas un pēc tam atveriet jaunu darbgrāmatu.

  2. Startējiet Visual Basic redaktoru.

  3. Ievietojiet moduli projektā.

  4. Type the following code into this module:
    
    Public x As Integer
    Sub Macro_1a()
        x = 10
        MsgBox x
        Macro_1b
    End Sub
    Sub Macro_1b()
        x = x * 2
        MsgBox x
        Macro2
    End Sub
  5. Ievietojiet projektā citu moduli.

  6. Šajā modulī ierakstiet šādu kodu:


    Sub Macro2()     x = x * 3
        MsgBox x
    End Sub

  7. Izpildiet Macro_1a makro pirmajā modulī.

  8. Ar mainīgo x, kas deklarēts kā "Publisks x kā vesels skaitlis", visiem trim makro projektā ir piekļuve vērtībai x. Pirmajā ziņojuma lodziņā tiek rādīta vērtība 10. Otrajā ziņojuma lodziņā tiek rādīta vērtība 20 (jo x tiek reizināts ar 2 Macro_1b). Trešajā ziņojuma lodziņā tiek parādīta vērtība 60 (jo x vērtība tiek mainīta uz 20 šajā Macro_1b un pēc tam makro2 ir reizināta ar 3).

  9. Mainiet deklarēšanas rindu pirmajā modulī no:

       Public x As Integer

    uz:

       Dim x As Integer

  10. Palaidiet Macro_1a makro.

  11. Ja mainīgais x ir deklarēts kā "Dim x Kā vesels skaitlis", tikai pirmā moduļa makro var piekļūt vērtībai x. Līdz ar to pirmajā ziņojuma lodziņā redzama vērtība 10, otrajā ziņojuma lodziņā redzama 20 vērtība (jo x tiek reizināts ar 2 Macro_1b) un trešajā ziņojuma lodziņā redzama vērtība 0 (jo Macro2 neredz x vērtību un neinicializētu nulles vērtību izmanto Makro 2).

  12. Mainiet deklarēšanas rindu pirmajā modulī no:

      Dim x As Integer

    uz:

        Private x As Integer

  13. Palaidiet Macro_1a makro.

  14. Tie paši ziņojumu lodziņi tiek rādīti, izmantojot privāto priekšraksta tvērumu, jo tie izmantoja rādīšanu lādma priekšrakstā. Mainīgajam x ir tāds pats tvērums: privāts līdz modulim, kurā tas tiek deklarēts.


PIEZĪME. Ja vēlaties, lai jūsu mainīgā tvērums būtu ierobežots līdz modulim, kurā tas tiek deklarēts, izmantojiet privatestatement nevis dim priekšrakstu. Tie abi sasniedz vienu un to pašu efektu, bet tvērums ir skaidrāks, kad lasāt kodu, ja izmantojat privāto paziņojumu.
 

Mainīgā darbības laiks

Laiks, kad mainīgais saglabā vērtību, tiek dēvēts par tā darbības laiku. Mainīgā vērtība var mainīties tā darbības laikā, taču saglabās vērtību. Turklāt, ja mainīgais zaudē tvērumu, tam vairs nav vērtības.
 

Mainīgā vērtības inicializēšana

Izpildot makro, visi mainīgie tiek inicializēti uz vērtību. Skaitlisks mainīgais tiek inicializēts uz nulli, mainīgā garuma virkne tiek inicializēta uz nulles garuma virkni (""), un fiksēta garuma virkne tiek aizpildīta ar ASCII kodu 0. Varianta mainīgie tiek inicializēti uz Tukšs. Tukšs mainīgais skaitliskā kontekstā tiek attēlots ar nulli un nulles garuma virkni ("") virknes kontekstā.

Procedūras līmeņa mainīgie

Ja makro ir deklarēts mainīgais, izmantojot priekšrakstu Dim, mainīgais saglabā vērtību, kamēr makro darbojas. Ja šis makro izsauc citus makro, mainīgā vērtība tiek saglabāta (tomēr nav pieejama citiem makro), kamēr tiek palaisti arī šie citi makro.

Lai demonstrētu, kā darbojas procedūras līmeņa mainīgie, veiciet tālāk norādītās darbības.

  1. Ievietojiet jaunu moduli projektā.

  2. Šajā modulī ierakstiet abus šos makro:

    Sub Macro1()
        'set x as a procedure level variable
       Dim x kā vesels skaitlis
       MsgBox "inicializētā x vērtība ir " & x
       x = 10
        MsgBox "x ir " & x
        'nākamā rindiņa izpilda Makro2
        Makro2
        MsgBox "x joprojām " & x
    End Sub
    Sub Macro2()
        MsgBox "x, kā redzams Makro2 ir " & x
    End Sub

  3. Palaidiet Makro1.

  4. Tiek parādīts šāds ziņojums:

        the initialized value of x is 0

  5. Noklikšķiniet uzLabi un tiks parādīts ziņojums:

     x is 10

  6. Noklikšķiniet uzLabi , un tiks parādīts šāds

    ziņojums:x, as seen by Macro2 is

  7. Noklikšķiniet uz Labi.

  8. Makro2 nerāda mainīgā x vērtību, jo mainīgais x ir lokālais makro1. Tiek parādīts šāds ziņojums:

    x is still 10

  9. Noklikšķiniet uz Labi.

  10. Palaidiet Makro1.

Jūs saņemat tos pašus ziņojumus, kas aprakstīti 3.–6. darbībā, jo, tiklīdz Macro1 pārtrauca darboties 6. darbībā, mainīgā x vērtība ir zaudēta. Tāpēc, vēlreiz izpildot Macro1 7. darbībā, pirmajā ziņojumā tiek rādīta vērtība x kā nulle (inicializētā vērtība).

Statisks atslēgvārds

Ja procedūras līmeņa mainīgais tiek deklarēts, izmantojot atslēgvārdu Statisks, mainīgais saglabā vērtību, līdz tiek atiestatīts jūsu projekts. Tāpēc, ja jums ir statisks mainīgais, nākamajā procedūras izsaukšanas reizē statiskais mainīgais tiek inicializēts līdz pēdējai vērtībai.

Lai uzzinātu, kā darbojas statiskais atslēgvārds, veiciet tālāk norādītās darbības.

  1. Change the code in Macro1 to:
    
    Sub Macro1()
        'set x as a procedure level variable
        Static x As Integer
           MsgBox "the initialized value of x is " & x
        x = x + 10
        MsgBox "x is " & x
    End Sub
  2. Palaidiet Makro1.

  3. Jūs saņemsit šādu

    ziņojumu:the initialized value of x is 0

  4. Noklikšķiniet uzLabi un tiks parādīts šāds

    ziņojums:x is 10

  5. Noklikšķiniet uz Labi.

  6. Palaidiet Makro1, un tiek parādīts šāds ziņojums:

    the initialized value of x is 10

  7. Noklikšķiniet uzLabi, un tiks parādīts šāds

    ziņojums:x is 20

  8. Noklikšķiniet uz Labi.

Ziņojumos parādītās vērtības atšķiras otrreiz, jo mainīgais x tiek deklarēts kā statisks mainīgais, un mainīgais saglabā vērtību pēc tam, kad pirmoreiz palaižat Macro1.

PIEZĪME.  Ja jums ir moduļa līmeņa mainīgais, tā darbības ilgums ir tāds pats kā tad, ja tas būtu statiska procedūras līmeņa mainīgais.

Lai pārbaudītu moduļa līmeņa mainīgā darbības laiku, rīkojieties šādi:

  1. Change the code in the module that contains Macro1 to the following:
    
    Dim x As Integer  'create a module-level variable
    Sub Macro1()
       MsgBox "the initialized value of x is " & x
       x = x + 10
       MsgBox "x is " & x
    End Sub
  2. Palaidiet Makro1, un tiks parādīts šāds ziņojums:

    the initialized value of x is 0

  3. Noklikšķiniet uz Labi, un tiks parādīts šāds

    ziņojums:x is 10

  4. Noklikšķiniet uz Labi

  5. Palaidiet Makro1, un tiks parādīts šāds ziņojums:

    the initialized value of x is 10

  6. Noklikšķiniet uz Labi.

  7. Tiek parādīts šāds ziņojums:

    x is 20

  8. Noklikšķiniet uz Labi.

Ziņojumos parādītās vērtības atšķiras otrreiz, jo mainīgais x tiek deklarēts kā statisks mainīgais un saglabā vērtību pēc tam, kad pirmoreiz palaižat Makro1.
 

Projekta atiestatīšana, lai atiestatītu mainīgos

Ja vēlaties atiestatīt statiska mainīgā vai moduļa līmeņa mainīgā vērtību, noklikšķiniet uz pogas Atiestatīt
Standarta rīkjosla vai izvēlnē Palaist noklikšķiniet uz Atiestatīt.

Ja makro1 projektam to darāt un pēc tam vēlreiz izpildāt Makro1,mainīgā x vērtība tiek inicializācijai atjaunota uz nulli, un tiek parādīts pirmais ziņojums:

    the initialized value of x is 0

Vai nepieciešama papildu palīdzība?

Paplašiniet savas prasmes

Iepazīties ar apmācību >

Esiet pirmais, kas saņem jaunās iespējas

PIEVIENOTIES MICROSOFT 365 INSIDERS >

Vai šī informācija bija noderīga?

Cik lielā mērā esat apmierināts ar valodas kvalitāti?
Kas ietekmēja jūsu pieredzi?

Paldies par jūsu atsauksmēm!

×