Excel VBA notikumi - vienkāršs (un pilnīgs) ceļvedis

Veidojot vai ierakstot makro programmā Excel, makro ir jāizpilda, lai izpildītu koda darbības.

Daži makro palaišanas veidi ietver makro dialoglodziņa izmantošanu, makro piešķiršanu pogai, saīsnes izmantošanu utt.

Papildus šiem lietotāja uzsāktajiem makro izpildījumiem makro palaišanai varat izmantot arī VBA notikumus.

Excel VBA notikumi - Ievads

Vispirms ļaujiet man paskaidrot, kas ir notikums VBA.

Notikums ir darbība, kas var izraisīt norādītā makro izpildi.

Piemēram, atverot jaunu darbgrāmatu, tas ir notikums. Ievietojot jaunu darblapu, tas ir notikums. Veicot dubultklikšķi uz šūnas, tas ir notikums.

VBA ir daudz šādu notikumu, un jūs varat izveidot kodu šiem notikumiem. Tas nozīmē, ka, tiklīdz notiek notikums un esat norādījis šī notikuma kodu, šis kods tiks izpildīts uzreiz.

Programma Excel to dara automātiski, tiklīdz tā pamana notikumu. Tātad jums tikai jāraksta kods un jāievieto pareizā notikumu apakšprogrammā (tas tiks aplūkots vēlāk šajā rakstā).

Piemēram, ja ievietojat jaunu darblapu un vēlaties, lai tai būtu gada prefikss, varat uzrakstīt tās kodu.

Tagad, kad kāds ievieto jaunu darblapu, šis kods tiks automātiski izpildīts un darblapas nosaukumam pievienos gada prefiksu.

Vēl viens piemērs varētu būt tas, ka vēlaties mainīt šūnas krāsu, kad kāds uz tās veic dubultklikšķi. Šim nolūkam varat izmantot dubultklikšķa notikumu.

Līdzīgi jūs varat izveidot VBA kodus daudziem šādiem notikumiem (kā mēs redzēsim vēlāk šajā rakstā).

Zemāk ir īss vizuāls attēls, kas parāda dubultklikšķa notikumu darbībā. Tiklīdz es veicu dubultklikšķi uz šūnas A1. Programma Excel uzreiz atver ziņojumu lodziņu, kurā tiek parādīta šūnas adrese.

Dubultklikšķis ir notikums, un ziņojuma lodziņa rādīšana ir tas, ko esmu norādījis kodā ikreiz, kad notiek dubultklikšķa notikums.

Lai gan iepriekš minētais piemērs ir bezjēdzīgs notikums, es ceru, ka tas palīdzēs jums saprast, kas patiesībā ir notikumi.

Dažādi Excel VBA notikumu veidi

Programmā Excel ir dažādi objekti - piemēram, pati Excel (uz kuru mēs bieži saucam par lietojumprogrammu), darbgrāmatas, darblapas, diagrammas utt.

Katram no šiem objektiem var būt dažādi notikumi. Piemēram:

  • Ja izveidojat jaunu darbgrāmatu, tas ir lietojumprogrammas līmeņa notikums.
  • Ja pievienojat jaunu darblapu, tas ir darbgrāmatas līmeņa notikums.
  • Ja maināt lapas šūnas vērtību, tas ir darblapas līmeņa notikums.

Tālāk ir norādīti dažāda veida notikumi, kas pastāv programmā Excel:

  1. Notikumi darblapas līmenī: Šie ir notikumu veidi, kas tiktu aktivizēti, pamatojoties uz darblapā veiktajām darbībām. Šo notikumu piemēri ir šūnas maiņa darblapā, atlases maiņa, dubultklikšķis uz šūnas, ar peles labo pogu noklikšķinot uz šūnas utt.
  2. Notikumi darbgrāmatas līmenī: Šie notikumi tiks aktivizēti, pamatojoties uz darbgrāmatas līmeņa darbībām. Šo notikumu piemēri ir jaunas darblapas pievienošana, darbgrāmatas saglabāšana, darbgrāmatas atvēršana, daļas vai visas darbgrāmatas izdrukāšana utt.
  3. Lietojumprogrammas līmeņa notikumi: Šie ir notikumi, kas notiek programmā Excel. To piemērs varētu būt jebkuras atvērtās darbgrāmatas aizvēršana vai jaunas darbgrāmatas atvēršana.
  4. UserForm līmeņa notikumi: Šie notikumi tiks aktivizēti, pamatojoties uz “UserForm” darbībām. To piemēri ir UserForm inicializēšana vai noklikšķināšana uz pogas UserForm.
  5. Diagrammas notikumi: Tie ir notikumi, kas saistīti ar diagrammas lapu. Diagrammas lapa atšķiras no darblapas (šeit lielākā daļa no mums tiek izmantoti darbam programmā Excel). Diagrammas lapu mērķis ir turēt diagrammu. Šādu notikumu piemēri būtu diagrammas sērijas maiņa vai diagrammas lieluma maiņa.
  6. OnTime un OnKey notikumi: Šie ir divi notikumi, kas neatbilst nevienai no iepriekš minētajām kategorijām. Tāpēc es tos uzskaitīju atsevišķi. Notikums “OnTime” ļauj izpildīt kodu noteiktā laikā vai pēc noteikta laika. Notikums “OnKey” ļauj izpildīt kodu, ja tiek izmantots noteikts taustiņsitiens (vai taustiņsitienu kombinācija).

Kur ievietot ar notikumiem saistīto kodu

Iepriekšējā sadaļā es apskatīju dažādus notikumu veidus.

Pamatojoties uz notikuma veidu, kods jāievieto attiecīgajā objektā.

Piemēram, ja tas ir ar darblapu saistīts notikums, tam vajadzētu būt darblapas objekta koda logā. Ja tas ir saistīts ar darbgrāmatu, tam vajadzētu būt darbgrāmatas objekta koda logā.

VBA dažādiem objektiem, piemēram, darblapām, darbgrāmatām, diagrammu lapām, lietotāja formām utt., Ir savi koda logi. Notikuma kods jāievieto attiecīgā objekta koda logā. Piemēram, ja tas ir darbgrāmatas līmeņa notikums, tad darbgrāmatas koda logā ir jābūt notikuma kodam.

Šīs sadaļas aptver vietas, kur varat ievietot notikuma kodu:

Darblapas koda logā

Atverot VB redaktoru (izmantojot īsinājumtaustiņu ALT + F11), jūs pamanīsit darblapu objektu Project Explorer. Katrai darbgrāmatas darblapai redzēsit vienu objektu.

Veicot dubultklikšķi uz darblapas objekta, kurā vēlaties ievietot kodu, tiks atvērts šīs darblapas koda logs.

Lai gan jūs varat sākt rakstīt kodu no nulles, daudz labāk ir izvēlēties notikumu no iespēju saraksta un ļaut VBA automātiski ievietot atlasītā notikuma atbilstošo kodu.

Lai to izdarītu, vispirms koda loga augšējā kreisajā stūrī nolaižamajā izvēlnē jāizvēlas darblapa.

Pēc darblapas atlasīšanas nolaižamajā izvēlnē tiek parādīts visu ar darblapu saistīto notikumu saraksts. Jūs varat izvēlēties to, kuru vēlaties izmantot, nolaižamajā izvēlnē koda loga augšējā labajā stūrī.

Tiklīdz izvēlaties notikumu, tas automātiski ievadīs izvēlētā notikuma koda pirmo un pēdējo rindiņu. Tagad jūs varat pievienot savu kodu starp divām rindām.

Piezīme. Tiklīdz nolaižamajā izvēlnē atlasīsit Darblapa, koda logā pamanīsit divas koda rindas. Kad esat izvēlējies notikumu, kuram vēlaties ievadīt kodu, varat izdzēst rindas, kas parādījās pēc noklusējuma.

Ņemiet vērā, ka katrai darblapai ir savs koda logs. Ievietojot Sheet1 kodu, tas darbosies tikai tad, ja notikums notiks Sheet1.

Šajā darbgrāmatas koda logā

Tāpat kā darblapas, ja jums ir darbgrāmatas līmeņa notikuma kods, varat to ievietot šī darbgrāmatas koda logā.

Veicot dubultklikšķi uz ThisWorkbook, tiks atvērts tās koda logs.

Jums ir jāizvēlas darbgrāmata nolaižamajā izvēlnē koda loga augšējā kreisajā stūrī.

Pēc tam, kad nolaižamajā izvēlnē ir atlasīta darbgrāmata, tiek parādīts visu ar darbgrāmatu saistīto notikumu saraksts. Jūs varat izvēlēties to, kuru vēlaties izmantot, nolaižamajā izvēlnē koda loga augšējā labajā stūrī.

Tiklīdz izvēlaties notikumu, tas automātiski ievadīs izvēlētā notikuma koda pirmo un pēdējo rindiņu. Tagad jūs varat pievienot savu kodu starp divām rindām.

Piezīme: Tiklīdz nolaižamajā izvēlnē atlasīsit Darbgrāmata, koda logā pamanīsit divas koda rindas. Kad esat izvēlējies notikumu, kuram vēlaties ievadīt kodu, varat izdzēst rindas, kas parādījās pēc noklusējuma.

Logā Userform Code

Veidojot UserForms programmā Excel, varat arī izmantot UserForm notikumus, lai izpildītu kodus, pamatojoties uz konkrētām darbībām. Piemēram, varat norādīt kodu, kas tiek izpildīts, noklikšķinot uz pogas.

Lai gan Sheet objekti un ThisWorkbook objekti jau ir pieejami, atverot VB redaktoru, UserForm vispirms ir jāizveido.

Lai izveidotu UserForm, ar peles labo pogu noklikšķiniet uz jebkura objekta, dodieties uz Ievietot un noklikšķiniet uz UserForm.

Tādējādi darbgrāmatā tiktu ievietots UserForm objekts.

Veicot dubultklikšķi uz UserForm (vai jebkura objekta, ko pievienojat UserForm), tas atvērs UserForm koda logu.

Tagad, tāpat kā darblapas vai ThisWorkbook, jūs varat atlasīt notikumu, un tajā tiks ievietota šī notikuma pirmā un pēdējā rinda. Un tad jūs varat pievienot kodu tā vidū.

Diagrammas koda logā

Programmā Excel varat arī ievietot diagrammu lapas (kas atšķiras no darblapām). Diagrammas lapa ir paredzēta tikai diagrammām.

Kad esat ievietojis diagrammas lapu, VB redaktorā varēsit redzēt diagrammas lapas objektu.

Jūs varat pievienot notikuma kodu diagrammas lapas koda logam tāpat kā mēs darblapā.

Veiciet dubultklikšķi uz diagrammas lapas objekta Project Explorer. Tiks atvērts diagrammas lapas koda logs.

Tagad jums ir jāizvēlas Diagramma nolaižamajā izvēlnē koda loga augšējā kreisajā stūrī.

Kad nolaižamajā izvēlnē ir atlasīta diagramma, tiek parādīts visu ar diagrammas lapu saistīto notikumu saraksts. Jūs varat izvēlēties to, kuru vēlaties izmantot, nolaižamajā izvēlnē koda loga augšējā labajā stūrī.

Piezīme. Tiklīdz nolaižamajā izvēlnē atlasīsit diagrammu, koda logā pamanīsit divas koda rindas. Kad esat izvēlējies notikumu, kuram vēlaties ievadīt kodu, varat izdzēst rindas, kas parādījās pēc noklusējuma.

Klases modulī

Klases moduļi ir jāievieto tāpat kā UserForms.

Klases modulī var būt kods, kas saistīts ar lietojumprogrammu, kas būtu pati Excel, un iegultās diagrammas.

Nākamajās nedēļās es aplūkošu klases moduli kā atsevišķu apmācību.

Ņemiet vērā, ka, izņemot OnTime un OnKey notikumus, nevienu no iepriekš minētajiem notikumiem nevar saglabāt parastajā VBA modulī.

Notikumu secības izpratne

Kad jūs aktivizējat notikumu, tas nenotiek atsevišķi. Tas var izraisīt arī vairāku aktivizētāju secību.

Piemēram, ievietojot jaunu darblapu, notiek šādas lietas:

  1. Tiek pievienota jauna darblapa
  2. Iepriekšējā darblapa tiek deaktivizēta
  3. Tiek aktivizēta jaunā darblapa

Lai gan vairumā gadījumu jums, iespējams, nav jāuztraucas par secību, ja veidojat sarežģītus kodus, kas balstās uz notikumiem, labāk ir zināt secību, lai izvairītos no negaidītiem rezultātiem.

Izpratne par argumentu lomu VBA pasākumos

Pirms ķeramies pie notikumu piemēriem un lieliskajām lietām, ko varat ar to darīt, ir jāapsver viens svarīgs jēdziens.

VBA pasākumos būtu divu veidu kodi:

  • Bez jebkādiem argumentiem
  • Ar argumentiem

Un šajā sadaļā es vēlos ātri aptvert argumentu lomu.

Zemāk ir kods, kurā nav argumentu (iekavas ir tukšas):

Privāta apakšdarbgrāmata_atvērt () MsgBox "Atcerieties aizpildīt darba laika uzskaites lapu" beigu apakšdaļu

Izmantojot iepriekš minēto kodu, atverot darbgrāmatu, tas vienkārši parāda ziņojumu lodziņu ar ziņojumu - “Atcerieties aizpildīt darba laika uzskaites lapu”.

Tagad apskatīsim kodu, kuram ir arguments.

Privāta apakšdarbgrāmata_Jauna lapa (ByVal Sh kā objekts) Sh.Range ("A1") = Sh.Name End Sub

Iepriekš minētais kods izmanto argumentu Sh, kas ir definēts kā objekta tips. Arguments Sh var būt darblapa vai diagrammas lapa, jo iepriekš minētais notikums tiek aktivizēts, pievienojot jaunu lapu.

Piešķirot darblapai pievienoto jauno lapu objekta mainīgajam Sh, VBA ir ļāvusi mums to izmantot kodā. Tātad, lai atsauktos uz jauno lapas nosaukumu, es varu izmantot Sh.Name.

Argumentu jēdziens būs noderīgs, apskatot VBA notikumu piemērus nākamajās sadaļās.

Notikumi darbgrāmatas līmenī (izskaidroti ar piemēriem)

Tālāk ir norādīti visbiežāk izmantotie notikumi darbgrāmatā.

PASĀKUMA NOSAUKUMS KAS IEDAINA PASĀKUMU
Aktivizēt Kad darbgrāmata ir aktivizēta
AfterSave Kad darbgrāmata ir instalēta kā pievienojumprogramma
BeforeSave Kad tiek saglabāta darbgrāmata
Pirms Aizvērt Kad darbgrāmata ir aizvērta
BeforePrint Kad tiek izdrukāta darbgrāmata
Deaktivizēt Kad darbgrāmata ir deaktivizēta
NewSheet Kad tiek pievienota jauna lapa
Atvērt Kad tiek atvērta darbgrāmata
SheetActivate Kad jebkura darbgrāmatas lapa ir aktivizēta
SheetBeforeDelete Kad tiek izdzēsta jebkura lapa
SheetBeforeDoubleClick Veicot dubultklikšķi uz jebkuras lapas
SheetBeforeRightClick Kad uz jebkuras lapas ir noklikšķināts ar peles labo pogu
SheetCalculate Kad tiek aprēķināta vai pārrēķināta jebkura lapa
SheetDeactivate Kad darbgrāmata ir deaktivizēta
SheetPivotTableUpdate Kad tiek atjaunināta darbgrāmata
SheetSelectionChange Kad tiek mainīta darbgrāmata
WindowActivate Kad darbgrāmata ir aktivizēta
WindowDeactivate Kad darbgrāmata ir deaktivizēta

Ņemiet vērā, ka tas nav pilnīgs saraksts. Pilnu sarakstu varat atrast šeit.

Atcerieties, ka darbgrāmatas notikuma kods tiek saglabāts ThisWorkbook objektu koda logā.

Tagad apskatīsim dažus noderīgus darbgrāmatas notikumus un redzēsim, kā tos var izmantot ikdienas darbā.

Darbgrāmatas atklātais pasākums

Pieņemsim, ka vēlaties parādīt lietotājam draudzīgu atgādinājumu par darba laika uzskaites aizpildīšanu ikreiz, kad viņš atver noteiktu darbgrāmatu.

Lai to izdarītu, varat izmantot tālāk norādīto kodu.

Privāta apakšdarbgrāmata_atvērt () MsgBox "Atcerieties aizpildīt darba laika uzskaites lapu" beigu apakšdaļu

Tiklīdz atverat darbgrāmatu ar šo kodu, tā parādīs ziņojumu lodziņu ar norādīto ziņojumu.

Strādājot ar šo kodu (vai darbgrāmatas notikumu kodiem kopumā), ir jāzina dažas lietas:

  • Ja darbgrāmatai ir makro un vēlaties to saglabāt, tā jāsaglabā .XLSM formātā. Pretējā gadījumā makro kods tiks zaudēts.
  • Iepriekš minētajā piemērā notikuma kods tiks izpildīts tikai tad, kad ir iespējoti makro. Var tikt parādīta dzeltena josla, kurā tiek prasīta atļauja aktivizēt makro. Kamēr tas nav iespējots, notikuma kods netiek izpildīts.
  • Darbgrāmatas notikuma kods tiek ievietots šī darbgrāmatas objekta koda logā.

Jūs varat vēl vairāk uzlabot šo kodu un parādīt ziņojumu tikai piektdien.

Zemāk esošais kods to darīs:

Privāta apakšdarbgrāmata_Open () wkday = Nedēļas diena (datums) Ja wkday = 6, tad MsgBox "Atcerieties aizpildīt darba laika uzskaites lapu"

Ņemiet vērā, ka nedēļas dienas funkcijā svētdienai tiek piešķirta vērtība 1, pirmdienai ir 2 utt.

Tāpēc piektdien esmu izmantojis 6.

Darbgrāmatas atvēršanas pasākums var būt noderīgs daudzās situācijās, piemēram:

  • Kad vēlaties atvērt sveiciena ziņojumu personai, atverot darbgrāmatu.
  • Ja vēlaties parādīt atgādinājumu, kad tiek atvērta darbgrāmata.
  • Ja vēlaties vienmēr aktivizēt vienu noteiktu darblapu darbgrāmatā, kad tā tiek atvērta.
  • Ja vēlaties atvērt saistītos failus kopā ar darbgrāmatu.
  • Ja vēlaties fiksēt datuma un laika zīmogu katru reizi, kad tiek atvērta darbgrāmata.

Darbgrāmatas NewSheet notikums

NewSheet notikums tiek aktivizēts, ievietojot jaunu lapu darbgrāmatā.

Pieņemsim, ka vēlaties ievadīt datuma un laika vērtību nesen ievietotās lapas šūnā A1. Lai to izdarītu, varat izmantot tālāk norādīto kodu.

Privāta apakšdarbgrāmata_Jauna lapa (ByVal Sh kā objekts) Par kļūdu Atsākt Nākamo Sh.Range ("A1") = Formāts (Tagad, "dd-mmm-gggg hh: mm: ss") Beigu apakšdaļa

Iepriekš minētais kods izmanto “On Error Resume Next”, lai apstrādātu gadījumus, kad kāds ievieto diagrammas lapu, nevis darblapu. Tā kā diagrammas lapai nav šūnas A1, tā parādītu kļūdu, ja netiek izmantota opcija “Atkārtot kļūdu”.

Vēl viens piemērs varētu būt gadījums, kad jaunai lapai, tiklīdz tā ir pievienota, vēlaties piemērot kādu pamata iestatījumu vai formatējumu. Piemēram, ja vēlaties pievienot jaunu lapu un vēlaties, lai tā automātiski iegūtu sērijas numuru (līdz 100), varat izmantot tālāk norādīto kodu.

Privāta apakšdarbgrāmata_Jauna lapa (ByVal Sh kā objekts) pēc kļūdas Atsākt ar Sh.Range ("A1"). Vērtība = "S. Nr." .Interior.Color = vbBlue .Font.Color = vbBalts gals ar For = 1 līdz 100 Sh.Range ("A1"). Nobīde (i, 0). Vērtība = i Nākamā i Sh.Range ("A1", diapazons ("A1"). Beigas (xlDown)). Borders.LineStyle = xlContinuous End Sub

Iepriekš minētais kods arī nedaudz formatē. Tas galvenes šūnai piešķir zilu krāsu un padara fontu baltu. Tas attiecas arī uz visām aizpildītajām šūnām.

Iepriekš minētais kods ir piemērs tam, kā īss VBA kods var palīdzēt nozagt dažas sekundes katru reizi, kad ievietojat jaunu darblapu (ja tas ir jādara katru reizi).

Darbgrāmata BeforeSave Event

Pirms tiek aktivizēts notikums Saglabāt, saglabājot darbgrāmatu. Ņemiet vērā, ka vispirms tiek aktivizēts notikums un pēc tam tiek saglabāta darbgrāmata.

Saglabājot Excel darbgrāmatu, var būt divi iespējamie scenāriji:

  1. Jūs to saglabājat pirmo reizi, un tajā tiks parādīts dialoglodziņš Saglabāt kā.
  2. Jūs to jau esat saglabājis agrāk, un tas vienkārši saglabās un pārrakstīs izmaiņas jau saglabātajā versijā.

Tagad apskatīsim dažus piemērus, kuros varat izmantot notikumu BeforeSave.

Pieņemsim, ka jums ir jauna darbgrāmata, kuru saglabājat pirmo reizi, un vēlaties lietotājam atgādināt, ka tā jāsaglabā K diskā, tad varat izmantot tālāk norādīto kodu.

Privāta apakšdarbgrāmata_BeforeSave (ByVal SaveAsUI kā Būla, Atcelt kā Būla) Ja SaveAsUI Tad MsgBox "Saglabāt šo failu K diskā" beigu apakšdaļa

Iepriekš minētajā kodā, ja fails nekad nav saglabāts, SaveAsUI ir patiess un tiek parādīts dialoglodziņš Saglabāt kā. Iepriekš minētais kods parādītu ziņojumu pirms dialoglodziņa Saglabāt kā parādīšanās.

Vēl viens piemērs varētu būt datuma un laika atjaunināšana, kad fails tiek saglabāts noteiktā šūnā.

Zemāk esošais kods datuma un laika zīmogu ievieto lapas 1 šūnā A1 ikreiz, kad fails tiek saglabāts.

Privāta apakšdarbgrāmata_BeforeSave (ByVal SaveAsUI kā Būla, Atcelt kā Būla) darblapas ("Sheet1"). Diapazons ("A1") = Formāts (Tagad, "dd-mmm-gggg hh: mm: ss") Beigu apakšdaļa

Ņemiet vērā, ka šis kods tiek izpildīts, tiklīdz lietotājs saglabā darbgrāmatu. Ja darbgrāmata tiek saglabāta pirmo reizi, tajā tiks parādīts dialoglodziņš Saglabāt kā. Bet, kad tiek parādīts dialoglodziņš Saglabāt kā, kods jau ir izpildīts. Ja šajā brīdī nolemjat atcelt un nesaglabāt darbgrāmatu, datums un laiks jau tiks ievadīts šūnā.

Darbgrāmata pirms notikuma slēgšanas

Pirms aizvēršanas notikums notiek tieši pirms darbgrāmatas aizvēršanas.

Zemāk esošais kods aizsargā visas darblapas pirms darbgrāmatas aizvēršanas.

Privāta apakšdarbgrāmata_BeforeClose (Atcelt kā Būla) Dim sh kā darblapa katrai shēmai šajā darbgrāmatā. Darblapas sh. Aizsargāt nākamo sh beigu apakšdaļu

Atcerieties, ka notikuma kods tiek aktivizēts, tiklīdz aizverat darbgrāmatu.

Viena svarīga lieta, kas jāzina par šo notikumu, ir tāda, ka tai nav vienalga, vai darbgrāmata faktiski ir slēgta vai nē.

Ja darbgrāmata nav saglabāta un tiek parādīta uzvedne ar jautājumu, vai saglabāt darbgrāmatu vai nē, un noklikšķinot uz Atcelt, darbgrāmata netiks saglabāta.Tomēr līdz tam notikuma kods jau būtu izpildīts.

Darbgrāmata BeforePrint Notikums

Piešķirot drukas komandu (vai komandu Print Preview), tiek aktivizēts notikums Pirms drukāšanas.

Zemāk esošais kods pārrēķina visas darblapas pirms darbgrāmatas drukāšanas.

Privāta apakšdarbgrāmata_BeforePrint (Atcelt kā Būla) katram ws darblapās ws. Aprēķināt nākamo ws End Sub

Kad lietotājs drukā darbgrāmatu, notikums tiek aktivizēts neatkarīgi no tā, vai viņš/viņa drukā visu darbgrāmatu vai tikai tās daļu.

Vēl viens piemērs ir kods, kas kājenei pievienotu datumu un laiku, kad darbgrāmata tiek drukāta.

Privāta apakšdarbgrāmata_BeforePrint (Atcelt kā Būla) Dim ws kā darblapa katram ws šajā darbagrāmatā. Darblapas ws.PageSetup.LeftFooter = "Izdrukāts-" un formāts (tagad, "dd-mmm-gggg hh: mm") Nākamais ws End Sub

Darblapas līmeņa notikumi (izskaidroti ar piemēriem)

Darblapas notikumi notiek, pamatojoties uz darblapas aktivizētājiem.

Tālāk ir norādīti visbiežāk izmantotie notikumi darblapā.

Notikuma nosaukums Kas izraisa notikumu
Aktivizēt Kad darblapa ir aktivizēta
BeforeDelete Pirms darblapas dzēšanas
BeforeDoubleClick Pirms darblapas tiek dubultklikšķināts
BeforeRightClick Pirms darblapas noklikšķināšanas ar peles labo pogu
Aprēķināt Pirms darba lapas aprēķināšanas vai pārrēķināšanas
Mainīt Kad tiek mainītas darblapas šūnas
Deaktivizēt Kad darblapa ir deaktivizēta
PivotTableUpdate Kad darblapas rakurstabula ir atjaunināta
AtlaseMainīt Kad tiek mainīta atlase darblapā

Ņemiet vērā, ka tas nav pilnīgs saraksts. Pilnu sarakstu varat atrast šeit.

Atcerieties, ka darblapas notikuma kods tiek saglabāts darblapas objekta koda logā (tajā, kurā vēlaties aktivizēt notikumu). Darbgrāmatā var būt vairākas darblapas, un jūsu kods tiks aktivizēts tikai tad, kad notikums notiks darblapā, kurā tas ir ievietots.

Tagad apskatīsim dažus noderīgus darblapas notikumus un redzēsim, kā tos var izmantot ikdienas darbā.

Darba lapa Aktivizēt notikumu

Šis notikums tiek aktivizēts, aktivizējot darblapu.

Zemāk esošais kods noņem lapas aizsardzību, tiklīdz tā tiek aktivizēta.

Privāta apakšdarblapa_Aktivēt () ActiveSheet.Aizsargāt beigu apakšnodaļu

Varat arī izmantot šo notikumu, lai pārliecinātos, ka, aktivizējot darblapu, tiek atlasīta konkrēta šūna vai šūnu diapazons (vai nosaukts diapazons). Zemāk esošais kods atlasītu šūnu D1, tiklīdz aktivizējat lapu.

Privāta apakšdarblapa_Aktivizēt () ActiveSheet.Range ("D1"). Atlasiet Beigt apakš

Darblapas maiņas notikums

Izmaiņu notikums tiek aktivizēts ikreiz, kad veicat izmaiņas darblapā.

Nu … ne vienmēr.

Ir dažas izmaiņas, kas izraisa notikumu, un dažas, kas to nedara. Šeit ir saraksts ar dažām izmaiņām, kas neizraisīs notikumu:

  • Mainot šūnas formatējumu (fonta lielums, krāsa, apmale utt.).
  • Apvienojot šūnas. Tas ir pārsteidzoši, jo dažreiz šūnu apvienošana noņem saturu arī no visām šūnām, izņemot augšējo kreiso.
  • Pievienojot, dzēšot vai rediģējot šūnas komentāru.
  • Kad kārtojat šūnu diapazonu.
  • Kad izmantojat mērķa meklēšanu.

Notikumu izraisītu šādas izmaiņas (pat ja jūs domājat, ka tā nevajadzētu):

  • Formatēšanas kopēšana un ielīmēšana aktivizētu notikumu.
  • Notīrot formatējumu, notikums tiks aktivizēts.
  • Pareizrakstības pārbaudes veikšana izraisītu notikumu.

Zemāk ir kods, kurā tiktu parādīts ziņojumu lodziņš ar mainītās šūnas adresi.

Privāta apakšdarblapa_maiņa (ByVal mērķis kā diapazons) MsgBox "Jūs tikko mainījāt" & Target.Address End Sub

Lai gan tas ir bezjēdzīgs makro, tas parāda, kā izmantot argumentu Mērķis, lai uzzinātu, kuras šūnas ir mainītas.

Tagad apskatīsim vēl dažus noderīgus piemērus.

Pieņemsim, ka jums ir šūnu diapazons (teiksim, A1: D10) un vēlaties parādīt uzvedni un jautāt lietotājam, vai viņš patiešām vēlējās mainīt šūnu šajā diapazonā vai nē, varat izmantot tālāk norādīto kodu.

Tas parāda uzvedni ar divām pogām - Jā un Nē. Ja lietotājs izvēlas “Jā”, izmaiņas tiek veiktas, pretējā gadījumā tās tiek apgrieztas.

Privāta apakšdarblapas_maiņa (ByVal mērķis kā diapazons) If Target.Row <= 10 And Target.Column <= 4 Tad Ans = MsgBox ("Jūs veicat izmaiņas šūnās A1: D10. Vai tiešām vēlaties?", vbJāNē) Beigas Ja Ja Ans = vbNē, tad Application.EnableEvents = Viltus pieteikums. Atsaukt Application.EnableEvents = Patiess beigas, ja beigas Sub

Iepriekš minētajā kodā mēs pārbaudām, vai mērķa šūna atrodas pirmajās 4 kolonnās un pirmajās 10 rindās. Šādā gadījumā tiek parādīts ziņojumu lodziņš. Turklāt, ja ziņojuma lodziņā lietotājs ir izvēlējies Nē, izmaiņas tiek atceltas (ar komandu Application.Undo).

Ņemiet vērā, ka esmu lietojis Application.EnableEvents = False pirms lietojumprogrammas. Atsaukt rindu. Un tad es to mainīju, izmantojot Application.EnableEvent = True nākamajā rindā.

Tas ir nepieciešams, jo atsaukšanas gadījumā tas arī izraisa izmaiņu notikumu. Ja es neiestatīšu EnableEvent uz False, tas turpinās aktivizēt izmaiņu notikumu.

Varat arī pārraudzīt izmaiņas nosauktajā diapazonā, izmantojot izmaiņu notikumu. Piemēram, ja jums ir nosaukts diapazons ar nosaukumu “DataRange” un vēlaties parādīt uzvedni, ja lietotājs veic izmaiņas šajā nosauktajā diapazonā, varat izmantot tālāk norādīto kodu.

Privāta apakšdarblapa_maiņa (ByVal mērķis kā diapazons) Dim DRange kā diapazons Iestatīt DRange = Diapazons ("DataRange") Ja nav krustošanās (Mērķis, DRange) nav nekas, tad MsgBox "Jūs tikko veicāt izmaiņas datu diapazonā" End If End Sub

Iepriekš minētais kods pārbauda, ​​vai šūnai/diapazonam, kurā esat veicis izmaiņas, ir datu diapazonam kopīgas šūnas. Ja tas notiek, tas parāda ziņojumu lodziņu.

Darbgrāmatas atlases maiņas notikums

Atlases maiņas notikums tiek aktivizēts ikreiz, kad darblapā tiek veiktas atlases izmaiņas.

Zemāk esošais kods pārrēķinās lapu, tiklīdz mainīsit atlasi.

Privāta apakšdarblapa_SelectionChange (ByVal Target As Range) lietojumprogramma. Aprēķināt beigu apakšdaļu

Vēl viens šī notikuma piemērs ir tad, kad vēlaties izcelt atlasītās šūnas aktīvo rindu un kolonnu.

Kaut kas, kā parādīts zemāk:

To var izdarīt ar šādu kodu:

Privāta apakšdarblapa_SelectionChange (ByVal Target As Range) Šūnas.Interior.ColorIndex = xlNone Izmantojot ActiveCell .EntireRow.Interior.Color = RGB (248, 203, 173) .EntireColumn.Interior.Color = RGB (180, 198, 231) Beigas Beigu apakš

Kods vispirms noņem fona krāsu no visām šūnām un pēc tam piemēro kodā minēto krāsu aktīvajai rindai un kolonnai.

Un tā ir šī koda problēma. Ka tas noņem krāsu no visām šūnām.

Ja vēlaties izcelt aktīvo rindu/kolonnu, vienlaikus saglabājot krāsu citās šūnās neskartu, izmantojiet šajā apmācībā parādīto tehniku.

Darbgrāmatas DoubleClick notikums

Šis ir viens no maniem iecienītākajiem darblapas notikumiem, un jūs redzēsiet daudz pamācību, kur esmu to izmantojis (piemēram, šo vai šo).

Šis notikums tiek aktivizēts, veicot dubultklikšķi uz šūnas.

Ļaujiet man parādīt, cik tas ir lieliski.

Izmantojot zemāk redzamo kodu, varat veikt dubultklikšķi uz šūnas, un tā piemēros fona krāsu, mainīs fonta krāsu un padarīs tekstu šūnā treknrakstu;

Privāta apakšdarblapa_BeforeDoubleClick (ByVal mērķis kā diapazons, Atcelt kā Būla) Atcelt = True ar mērķi .Interior.Color = vbBlue .Font.Color = vbWhite .Font.Bold = Patiess beigas ar beigu apakšdaļu

Tas var būt noderīgi, ja ejat cauri šūnu sarakstam un vēlaties izcelt dažas atlasītās. Lai gan jūs varat izmantot taustiņu F4, lai atkārtotu pēdējo darbību, tas varētu izmantot tikai viena veida formatējumu. Izmantojot šo dubultklikšķa notikumu, varat izmantot visus trīs, veicot tikai dubultklikšķi.

Ņemiet vērā, ka iepriekš minētajā kodā es esmu atcēlis vērtību Cancel = True.

Tas tiek darīts tā, lai dubultklikšķa noklusējuma darbība tiktu atspējota, tas ir, lai nokļūtu rediģēšanas režīmā. Izmantojot Atcelt = True, programma Excel nenokļūtu rediģēšanas režīmā, veicot dubultklikšķi uz šūnas.

Šeit ir vēl viens piemērs.

Ja programmā Excel ir uzdevumu saraksts, varat izmantot dubultklikšķa notikumu, lai lietotu pārsvītrojuma formātu, lai atzīmētu uzdevumu kā pabeigtu.

Kaut kas, kā parādīts zemāk:

Šeit ir kods, kas to darīs:

Privāta apakšdarblapa_BeforeDoubleClick (ByVal mērķis kā diapazons, Atcelt kā Būla) Atcelt = True CurrFormat = Target.Font.Strikethrough If CurrFormat then Target.Font.Strikethrough = False Else Target.Font.Strikethrough = Patiess beigas Ja beigas

Ņemiet vērā, ka šajā kodā esmu veicis dubultklikšķi kā pārslēgšanas notikumu. Veicot dubultklikšķi uz šūnas, tā pārbauda, ​​vai pārsvītrojuma formāts jau ir piemērots. Ja tas ir izdarīts, veicot dubultklikšķi, tiek noņemts pārsvītrojuma formāts, un, ja tas nav izdarīts, tiek izmantots pārsvītrojuma formāts.

Excel VBA OnTime notikums

Notikumi, ko līdz šim esam redzējuši šajā rakstā, bija saistīti ar kādu no Excel objektiem, vai tā būtu darbgrāmata, darblapa, diagrammas lapa vai UserForms utt.

OnTime notikums atšķiras no citiem notikumiem, jo ​​to var saglabāt parastajā VBA modulī (kamēr citi bija jāievieto tādu objektu koda logā kā ThisWorkbook vai Worksheets vai UserForms).

Parastajā VBA modulī to izmanto kā lietojumprogrammas objekta metodi.

Tas tiek uzskatīts par notikumu tādēļ, ka to var aktivizēt, pamatojoties uz jūsu norādīto laiku. Piemēram, ja es vēlos, lai lapa tiktu pārrēķināta ik pēc 5 minūtēm, es varu tam izmantot OnTime notikumu.

Vai arī, ja vēlos parādīt ziņojumu/atgādinājumu noteiktā diennakts laikā, varu izmantot OnTime notikumu.

Zemāk ir kods, kas katru dienu pulksten 14 parādīs ziņojumu.

Sub MessageTime () Application.OnTime TimeValue ("14:00:00"), "ShowMessage" End Sub Show ShowMessage () MsgBox "It's Lunch Time" Beigu apakš

Atcerieties, ka šis kods jāievieto parastajā VBA modulī,

Turklāt, lai gan OnTime notikums tiktu aktivizēts norādītajā laikā, makro ir jāpalaiž manuāli jebkurā laikā. Kad esat palaidis makro, tas pagaidīs līdz pulksten 14:00 un pēc tam izsauks makro “ShowMessage”.

Makro ShowMessage parādītu ziņojumu.

Notikumam OnTime ir četri argumenti.

Application.OnTime (Agrākais laiks, Procedūra, LatestTime, Grafiks)

  • Agrākais laiks: Laiks, kad vēlaties veikt procedūru.
  • Procedūra: Veicamās procedūras nosaukums.
  • LatestTime (neobligāti): Ja darbojas cits kods un jūsu norādīto kodu nevar palaist norādītajā laikā, varat norādīt LatestTime, uz kuru tam jāgaida. Piemēram, tas varētu būt EarliestTime + 45 (tas nozīmē, ka tas gaidīs 45 sekundes, līdz otra procedūra tiks pabeigta). Ja pat pēc 45 sekundēm procedūru nevar izpildīt, tā tiek pārtraukta. Ja to nenorādīsit, programma Excel nogaidīs, līdz kodu varēs palaist, un pēc tam to palaidīs.
  • Grafiks (pēc izvēles): Ja ir iestatīta vērtība True, tiek ieplānota jauna laika procedūra. Ja tas ir nepatiess, tas atceļ iepriekš iestatīto procedūru. Pēc noklusējuma tas ir True.

Iepriekš minētajā piemērā mēs izmantojām tikai pirmos divus argumentus.

Apskatīsim citu piemēru.

Zemāk esošais kods atjauninātu darblapu ik pēc 5 minūtēm.

Dim NextRefresh as Date Sub RefreshSheet () ThisWorkbook.Worksheets ("Sheet1"). Aprēķināt NextRefresh = Now + TimeValue ("00:05:00") Application.OnTime NextRefresh, "RefreshSheet" End Sub Sub StopRefresh () On Error Resume Next Application.OnTime NextRefresh, "RefreshSheet",, False End Sub

Iepriekš minētais kods atjauninātu darblapu ik pēc 5 minūtēm.

Tas izmanto funkciju Tagad, lai noteiktu pašreizējo laiku, un pēc tam pievieno 5 minūtes pašreizējam laikam.

OnTime notikums turpinās darboties, līdz to pārtrauksit. Ja aizverat darbgrāmatu un programma Excel joprojām darbojas (citas darbgrāmatas ir atvērtas), darbgrāmata, kurā darbojas OnTime notikums, tiek atvērta pati.

To var labāk atrisināt, īpaši pārtraucot OnTime notikumu.

Iepriekš minētajā kodā man ir StopRefresh kods, bet jums tas jāizpilda, lai apturētu OnTime notikumu. To var izdarīt manuāli, piešķirt tai pogai un to izdarīt, nospiežot pogu vai zvanot no notikuma Darbgrāmatas aizvēršana.

Privāta apakšdarbgrāmata_BeforeClose (Atcelt kā Būla) Zvans StopRefresh End Sub

Iepriekš minētais notikuma kods “BeforeClose” atrodas šī darbgrāmatas koda logā.

Excel VBA OnKey notikums

Strādājot ar Excel, tā nepārtraukti uzrauga jūsu izmantotos taustiņsitienus. Tas ļauj mums izmantot taustiņsitienus kā notikuma izraisītāju.

Izmantojot OnKey notikumu, varat norādīt taustiņsitienu (vai taustiņu kombināciju) un kodu, kas jāizpilda, izmantojot šo taustiņsitienu. Nospiežot šos taustiņus, tas izpildīs kodu.

Tāpat kā OnTime pasākumam, jums ir jābūt iespējai atcelt OnKey notikumu. Turklāt, iestatot OnKey notikumu konkrētam taustiņsitienam, tas kļūst pieejams visās atvērtajās darbgrāmatās.

Pirms es parādīšu OnKey notikuma izmantošanas piemēru, ļaujiet man vispirms dalīties ar galvenajiem kodiem, kas jums ir pieejami VBA.

ATSLĒGTA KODS
Atpakaļatkāpe {BACKSPACE} vai {BS}
Pārtraukums {BREAK}
Lielie burti {LIELIE BURTI}
Dzēst {DELETE} vai {DEL}
Lejupvērstā bultiņa {DOWN}
Beigas {END}
Ievadiet ~
Ievadiet (uz nueric tastatūras) {ENTER}
Escape {ESCAPE} vai {ESC}
Mājas {MĀJAS}
Ins {INSERT}
Kreisā bultiņa {LEFT}
NumLock {NUMLOCK}
PageDown {PGDN}
PageUp {PGUP}
RightArrow {TAISNĪBA}
Ritināšanas bloķēšana {SCROLLOCK}
Tab {TAB}
Augšupvērstā bultiņa {UP}
F1 līdz F15 {F1} - {F15}

Ja jums ir nepieciešams izmantot jebkuru onkey notikumu, jums ir jāizmanto tā kods.

Iepriekš redzamajā tabulā ir kodi atsevišķiem taustiņsitieniem.

Varat arī apvienot tos ar šādiem kodiem:

  • Shift: + (Plus zīme)
  • Kontrole: ^ (Caret)
  • Alt: % (Procenti)

Piemēram, Alt F4 ir jāizmanto kods: “%{F4}” - kur % ir taustiņš ALT un {F4} ir taustiņš F4.

Tagad apskatīsim piemēru (atcerieties, ka OnKey notikumu kods ir ievietots parastajā VBA modulī).

Nospiežot taustiņu PageUp vai PageDown, tas pārlec 29 rindas virs/zem aktīvās šūnas (vismaz tā tas notiek manā klēpjdatorā).

Ja vēlaties, lai vienlaikus tiktu pārvietotas tikai 5 rindas, varat izmantot tālāk norādīto kodu.

Sub PageUpDOwnKeys () Application.OnKey "{PgUp}", "PageUpMod" Application.OnKey "{PgDn}", "PageDownMod" End Sub PageUpMod () On Error Resume Next ActiveCell.Offset (-5, 0) .Activate End Apakšlapa PageDownMod () pēc kļūdas Atsākt nākamo ActiveCell. Nobīde (5, 0). Aktivizēt beigu apakšdaļu

Palaižot koda pirmo daļu, tiks palaisti OnKey notikumi. Kad tas ir izpildīts, izmantojot PageUp un PageDown taustiņu, kursors vienlaikus lēks tikai par 5 rindām.

Ņemiet vērā, ka esam izmantojuši “Ieslēgt kļūdu, lai atsāktu nākamo”, lai pārliecinātos, ka kļūdas netiek ņemtas vērā. Šīs kļūdas var rasties, nospiežot taustiņu PageUp, pat atrodoties darblapas augšdaļā. Tā kā vairs nav lēcienu rindu, kods parādītu kļūdu. Bet, tā kā mēs esam izmantojuši “On Error Resume Next”, tad tas tiks ignorēts.

Lai pārliecinātos, ka šie OnKey notikumi ir pieejami, jums jāpalaiž koda pirmā daļa. Ja vēlaties, lai tas būtu pieejams, tiklīdz atverat darbgrāmatu, varat to ievietot ThisWorkbook koda logā.

Privāta apakšdarbgrāmata_atvērt () Application.OnKey "{PgUp}", "PageUpMod" Application.OnKey "{PgDn}", "PageDownMod" beigu apakšdaļa

Zemāk esošais kods atgriezīs atslēgas to parastajā funkcionalitātē.

Sub Cancel_PageUpDownKeysMod () Application.OnKey "{PgUp}" Application.OnKey "{PgDn}" beigu apakšdaļa

Ja OnKey metodē nenorādīsit otro argumentu, tas atgriezīs taustiņsitienu parastajā funkcionalitātē.

Ja vēlaties atcelt taustiņsitiena funkcionalitāti, lai programma Excel nedarītu neko, kad tiek izmantots šis taustiņsitiens, kā otrais arguments jāizmanto tukša virkne.

Zemāk esošajā kodā Excel neko nedarītu, ja mēs izmantojam PageUp vai PageDown taustiņus.

Apakš Ignore_PageUpDownKeys () Application.OnKey "{PgUp}", "" Application.OnKey "{PgDn}", "Beigu apakšdaļa

Notikumu atspējošana VBA

Dažreiz jums var būt nepieciešams atspējot notikumus, lai kods darbotos pareizi.

Piemēram, pieņemsim, ka man ir diapazons (A1: D10) un es vēlos parādīt ziņojumu ikreiz, kad šajā diapazonā tiek mainīta šūna. Tāpēc es parādīju ziņojumu lodziņu un jautāju lietotājam, vai viņš ir pārliecināts, ka vēlas veikt izmaiņas. Ja atbilde ir Jā, izmaiņas tiek veiktas, un, ja atbilde ir Nē, VBA to atsauktu.

Jūs varat izmantot zemāk esošo kodu:

Privāta apakšdarblapas_maiņa (ByVal mērķis kā diapazons) If Target.Row <= 10 And Target.Column <= 4 Tad Ans = MsgBox ("Jūs veicat izmaiņas šūnās A1: D10. Vai tiešām vēlaties?", VbJāNē

Šī koda problēma ir tāda, ka, kad lietotājs ziņojuma lodziņā izvēlas Nē, darbība tiek mainīta (kā esmu izmantojis lietojumprogrammu. Atsaukt).

Kad atsaukšana notiek un vērtība tiek mainīta uz sākotnējo, VBA maiņas notikums atkal tiek aktivizēts un lietotājam atkal tiek parādīts tas pats ziņojumu lodziņš.

Tas nozīmē, ka jūs varat turpināt noklikšķināt uz NĒ ziņojuma lodziņā, un tas turpinās parādīties. Tas notiek, jo šajā gadījumā esat iestrēdzis bezgalīgajā cilpā.

Lai izvairītos no šādiem gadījumiem, jums ir jāatspējo notikumi, lai netiktu aktivizēts izmaiņu notikums (vai jebkurš cits notikums).

Šāds kods šajā gadījumā labi darbotos:

Privāta apakšdarblapas_maiņa (ByVal mērķis kā diapazons) If Target.Row <= 10 And Target.Column <= 4 Tad Ans = MsgBox ("Jūs veicat izmaiņas šūnās A1: D10. Vai tiešām vēlaties?", vbJāNē) Beigas Ja Ja Ans = vbNē, tad Application.EnableEvents = Viltus pieteikums. Atsaukt Application.EnableEvents = Patiess beigas, ja beigas Sub

Iepriekš minētajā kodā, tieši virs lietojumprogrammas. Atsaukt rindu, mēs esam izmantojuši - Application.EnableEvents = False.

Iestatot EnableEvents uz False, netiktu aktivizēts neviens notikums (pašreizējā vai nevienā atvērtā darbgrāmatā).

Kad esam pabeiguši atsaukšanas darbību, mēs varam pārslēgt atpakaļ EnableEvents rekvizītu uz True.

Ņemiet vērā, ka notikumu atspējošana ietekmē visas darbgrāmatas, kas pašlaik tiek atvērtas (vai atvērtas, kamēr EnableEvents ir iestatīts uz False). Piemēram, atverot jaunu darbgrāmatu kā koda daļu, darbgrāmatas atvēršanas pasākums nedarbosies.

Notikumu ietekme Undo Stack

Vispirms ļaujiet man pastāstīt, kas ir atsaukšanas kaudze.

Strādājot programmā Excel, tā nepārtraukti uzrauga jūsu darbības. Kļūdoties, vienmēr varat izmantot taustiņu kombināciju Control + Z, lai atgrieztos iepriekšējā solī (t.i., atsauktu pašreizējo darbību).

Ja divreiz nospiežat taustiņu kombināciju Control + Z, tas atgriezīs divus soļus atpakaļ. Šīs jūsu veiktās darbības tiek saglabātas kā atsaukšanas kaudzes daļa.

Jebkurš notikums, kas maina darblapu, iznīcina šo atsaukšanas kaudzīti.Tas nozīmē, ka, ja pirms notikuma aktivizēšanas esmu izdarījis piecas lietas, es nevarēšu izmantot Control + Z, lai atgrieztos pie iepriekšējām darbībām. Pasākuma aktivizēšana man šo kaudzīti ir iznīcinājusi.

Zemāk esošajā kodā es izmantoju VBA, lai šūnā A1 ievadītu laika zīmogu ikreiz, kad darblapā tiek veiktas izmaiņas.

Privāta apakšdarblapas_maiņa (ByVal mērķis kā diapazons) Application.EnableEvents = False Range ("A1"). Value = Format (Now, "dd-mmm-yyyy hh: mm: ss") Application.EnableEvents = True End Sub

Tā kā es veicu izmaiņas darblapā, tas iznīcinās atsaukšanas kaudzīti.

Ņemiet vērā arī to, ka tas attiecas ne tikai uz notikumiem.

Ja jums ir kods, kas tiek glabāts parastajā VBA modulī un veicat izmaiņas darblapā, tas arī iznīcinās atsaukšanas kaudzīti programmā Excel.

Piemēram, zemāk esošais kods vienkārši ievadiet tekstu “Sveiki” šūnā A1, taču pat tā palaišana iznīcinātu atsaukšanas kaudzīti.

Apakšveids Sveiki () diapazons ("A1"). Vērtība = "Sveiki" beigu apakš

Jums varētu patikt arī šādas Excel VBA apmācības:

  • Darbs ar šūnām un diapazoniem programmā Excel VBA.
  • Darbs ar darblapām programmā Excel VBA.
  • Darbs ar darbgrāmatām programmā Excel VBA.
  • Excel VBA cilpas - galīgais ceļvedis.
  • Izmantojot IF, tad citu paziņojumu programmā Excel VBA.
  • Nākamajai cilpai programmā Excel.
  • Lietotāja definētu funkciju izveide programmā Excel VBA.
  • Kā izveidot un izmantot pievienojumprogrammas programmā Excel.
  • Izveidojiet un atkārtoti izmantojiet makro, saglabājot personiskajā makro darbgrāmatā.
wave wave wave wave wave