- „Excel VBA“ renginiai - įvadas
- Įvairūs „Excel VBA“ įvykių tipai
- Kur įdėti su įvykiais susijusį kodą
- Įvykių sekos supratimas
- Argumentų vaidmens VBA renginiuose supratimas
- Darbaknygės lygio įvykiai (paaiškinta pavyzdžiais)
- Darbo lapo lygio įvykiai (paaiškinta pavyzdžiais)
- „Excel VBA OnTime“ įvykis
- „Excel VBA OnKey“ įvykis
- Įvykių išjungimas VBA
- Įvykių poveikis Anuliuoti kaminą
Kai kuriate arba įrašote makrokomandą „Excel“, turite paleisti makrokomandą, kad atliktumėte kodo veiksmus.
Keletas makrokomandos paleidimo būdų apima makrokomandos dialogo lango naudojimą, makrokomandos priskyrimą mygtukui, nuorodą ir kt.
Be šių vartotojo inicijuotų makrokomandų vykdymų, makrokomandai vykdyti galite naudoti ir VBA įvykius.
„Excel VBA“ renginiai - įvadas
Pirmiausia leiskite man paaiškinti, kas yra įvykis VBA.
Įvykis yra veiksmas, kuris gali suaktyvinti nurodytos makrokomandos vykdymą.
Pavyzdžiui, kai atidarote naują darbaknygę, tai yra įvykis. Kai įterpiate naują darbalapį, tai yra įvykis. Dukart spustelėjus langelį, tai yra įvykis.
VBA yra daug tokių įvykių, ir jūs galite sukurti šių įvykių kodus. Tai reiškia, kad kai tik įvyks įvykis ir jei nurodysite to įvykio kodą, tas kodas bus nedelsiant įvykdytas.
„Excel“ tai daro automatiškai, kai tik pastebi, kad įvyko įvykis. Taigi jums tereikia parašyti kodą ir įdėti jį į teisingą įvykių paprogramę (tai bus aptarta vėliau šiame straipsnyje).
Pvz., Jei įterpiate naują darbalapį ir norite, kad jame būtų metų priešdėlis, galite parašyti jo kodą.
Dabar, kai kas nors įterpia naują darbalapį, šis kodas bus automatiškai vykdomas ir prie darbalapio pavadinimo pridedamas metų priešdėlis.
Kitas pavyzdys gali būti tai, kad norite pakeisti langelio spalvą, kai kas nors dukart jį spustelėja. Tam galite naudoti įvykį dukart spustelėdami.
Panašiai galite sukurti VBA kodus daugeliui tokių įvykių (kaip pamatysime vėliau šiame straipsnyje).
Žemiau yra trumpa vizualizacija, kurioje parodytas veiksmas dukart spustelėjus. Kai tik dukart spustelėsiu langelį A1. „Excel“ akimirksniu atidaro pranešimų laukelį, kuriame rodomas langelio adresas.
Dvigubas spustelėjimas yra įvykis, o pranešimų laukelio rodymas yra tai, ką nurodžiau kode, kai įvyksta dvigubo paspaudimo įvykis.
Nors aukščiau pateiktas pavyzdys yra nenaudingas įvykis, tikiuosi, kad tai padės jums suprasti, kas iš tikrųjų yra įvykiai.
Įvairūs „Excel VBA“ įvykių tipai
„Excel“ yra įvairių objektų, tokių kaip pati „Excel“ (į kurią dažnai vadiname programą), darbo knygos, darbalapiai, diagramos ir kt.
Kiekvienas iš šių objektų gali turėti įvairių įvykių. Pavyzdžiui:
- Jei kuriate naują darbaknygę, tai yra programos lygio įvykis.
- Jei pridėsite naują darbalapį, tai bus darbaknygės lygio įvykis.
- Jei pakeisite lapo langelio vertę, tai bus darbalapio lygio įvykis.
Žemiau pateikiami įvairių tipų „Excel“ įvykiai:
- Darbo lapo lygio įvykiai: Tai yra įvykių tipai, kurie būtų suaktyvinti remiantis darbalapyje atliktais veiksmais. Šių įvykių pavyzdžiai yra langelio keitimas darbalapyje, pasirinkimo keitimas, dukart spustelėjus langelį, dešiniuoju pelės mygtuku spustelėjus langelį ir pan.
- Darbo knygos lygio įvykiai: Šie įvykiai būtų suaktyvinti atsižvelgiant į veiksmus darbaknygės lygiu. Šių įvykių pavyzdžiai yra naujo darbalapio pridėjimas, darbaknygės išsaugojimas, darbaknygės atidarymas, dalies ar visos darbaknygės spausdinimas ir kt.
- Programos lygio įvykiai: Tai įvykiai, įvykę „Excel“ programoje. Pavyzdžiui, uždaryti bet kurią atidarytą darbaknygę arba atidaryti naują darbaknygę.
- „UserForm“ lygio įvykiai: Šie įvykiai būtų suaktyvinti remiantis „UserForm“ veiksmais. Pavyzdžiai yra „UserForm“ inicijavimas arba mygtuko „UserForm“ paspaudimas.
- Įvykių diagrama: Tai įvykiai, susiję su diagramos lapu. Diagramos lapas skiriasi nuo darbalapio (kuriame dauguma iš mūsų yra dirbame „Excel“). Diagramos lapų tikslas yra laikyti diagramą. Tokių įvykių pavyzdžiai būtų diagramos serijos keitimas arba diagramos dydžio keitimas.
- „OnTime“ ir „OnKey“ renginiai: Tai yra du įvykiai, kurie netinka nė vienai iš aukščiau išvardytų kategorijų. Taigi aš juos išvardijau atskirai. „OnTime“ įvykis leidžia vykdyti kodą tam tikru laiku arba praėjus tam tikram laikui. „OnKey“ įvykis leidžia vykdyti kodą, kai naudojamas tam tikras klavišų paspaudimas (arba klavišų kombinacija).
Kur įdėti su įvykiais susijusį kodą
Pirmiau pateiktame skyriuje aptariau įvairių tipų įvykius.
Atsižvelgiant į įvykio tipą, turite įterpti kodą į atitinkamą objektą.
Pvz., Jei tai su darbalapiu susijęs įvykis, jis turėtų patekti į darbalapio objekto kodo langą. Jei tai susiję su darbaknyge, ji turėtų patekti į darbaknygės objekto kodo langą.
VBA skirtingi objektai, pvz., Darbalapiai, darbaknygės, diagramų lapai, vartotojo formos ir kt., Turi savo kodo langus. Įvykio kodą turite įdėti į atitinkamo objekto kodo langą. Pvz. - jei tai yra darbaknygės lygio įvykis, tada darbaknygės kodo lange turite turėti įvykio kodą.Šie skyriai apima vietas, kuriose galite įdėti įvykio kodą:
Darbo lapo kodo lange
Kai atidarote VB redaktorių (naudodami sparčiuosius klavišus ALT + F11), „Project Explorer“ pastebėsite darbalapių objektą. Kiekvienam darbaknygės darbalapiui matysite vieną objektą.
Dukart spustelėjus darbalapio objektą, į kurį norite įdėti kodą, bus atidarytas to darbalapio kodo langas.
Nors galite pradėti rašyti kodą nuo nulio, daug geriau pasirinkti įvykį iš parinkčių sąrašo ir leisti VBA automatiškai įterpti atitinkamą pasirinkto įvykio kodą.
Norėdami tai padaryti, kodo lango viršuje kairėje esančiame išskleidžiamajame meniu pirmiausia turite pasirinkti darbalapį.
Išskleidžiamajame meniu pasirinkę darbalapį, gausite visų su darbalapiu susijusių įvykių sąrašą. Kodo lango viršuje dešinėje esančiame išskleidžiamajame meniu galite pasirinkti norimą naudoti.
Kai tik pasirinksite įvykį, jis automatiškai įves pirmąją ir paskutinę pasirinkto įvykio kodo eilutę. Dabar galite pridėti kodą tarp dviejų eilučių.
Pastaba: Kai tik išskleidžiamajame meniu pasirinksite darbalapį, kodo lange pastebėsite dvi kodo eilutes. Pasirinkę įvykį, kuriam norite gauti kodą, galite ištrinti eilutes, kurios buvo rodomos pagal numatytuosius nustatymus.
Atminkite, kad kiekvienas darbalapis turi savo kodo langą. Kai įdėsite „Sheet1“ kodą, jis veiks tik tuo atveju, jei įvykis įvyks „Sheet1“.
„ThisWorkbook“ kodo lange
Kaip ir darbalapiai, jei turite darbaknygės lygio įvykio kodą, galite jį įdėti į „ThisWorkbook“ kodo langą.
Dukart spustelėjus „ThisWorkbook“, atsidarys jos kodo langas.
Kodo lango viršuje kairėje esančiame išskleidžiamajame meniu turite pasirinkti darbaknygę.
Išskleidžiamajame meniu pasirinkę Darbaknygę gausite visų su Darbaknyge susijusių įvykių sąrašą. Kodo lango viršuje dešinėje esančiame išskleidžiamajame meniu galite pasirinkti norimą naudoti.
Kai tik pasirinksite įvykį, jis automatiškai įves pirmąją ir paskutinę pasirinkto įvykio kodo eilutę. Dabar galite pridėti kodą tarp dviejų eilučių.
Pastaba: Kai tik išskleidžiamajame meniu pasirinksite Darbaknygė, kodo lange pastebėsite dvi kodo eilutes. Pasirinkę įvykį, kuriam norite gauti kodą, galite ištrinti eilutes, kurios buvo rodomos pagal numatytuosius nustatymus.
„Userform“ kodo lange
Kai kuriate „UserForms“ programoje „Excel“, taip pat galite naudoti „UserForm“ įvykius, kad vykdytumėte kodus pagal konkrečius veiksmus. Pavyzdžiui, galite nurodyti kodą, kuris vykdomas spustelėjus mygtuką.
Nors „Sheet“ objektai ir „ThisWorkbook“ objektai jau yra prieinami, kai atidarote VB redaktorių, „UserForm“ yra tai, ką pirmiausia turite sukurti.
Norėdami sukurti „UserForm“, dešiniuoju pelės mygtuku spustelėkite bet kurį objektą, eikite į „Insert“ ir spustelėkite „UserForm“.
Tai įterptų „UserForm“ objektą į darbaknygę.
Dukart spustelėjus „UserForm“ (arba bet kurį objektą, kurį pridedate prie „UserForm“), atsidarys „UserForm“ kodo langas.
Dabar, kaip ir darbalapiai ar „ThisWorkbook“, galite pasirinkti įvykį ir įterpti pirmąją bei paskutinę to įvykio eilutes. Ir tada jūs galite pridėti kodą jo viduryje.
Diagramos kodo lange
„Excel“ taip pat galite įterpti diagramų lapus (kurie skiriasi nuo darbalapių). Diagramos lape turi būti tik diagramos.
Įdėję diagramos lapą, VB redaktoriuje galėsite matyti diagramos lapo objektą.
Įvykio kodą galite pridėti prie diagramos lapo kodo lango, kaip ir darbalapyje.
Dukart spustelėkite diagramos lapo objektą „Project Explorer“. Tai atvers diagramos lapo kodo langą.
Dabar kodo lango viršuje kairėje esančiame išskleidžiamajame meniu turite pasirinkti Diagrama.
Išskleidžiamajame meniu pasirinkę Diagrama, gausite visų su Diagramos lapu susijusių įvykių sąrašą. Kodo lango viršuje dešinėje esančiame išskleidžiamajame meniu galite pasirinkti norimą naudoti.
Pastaba: kai tik išskleidžiamajame meniu pasirenkate Diagrama, kodo lange pastebėsite dvi kodo eilutes. Pasirinkę įvykį, kuriam norite gauti kodą, galite ištrinti eilutes, kurios buvo rodomos pagal numatytuosius nustatymus.
Klasės modulyje
Klasės modulius reikia įterpti kaip ir „UserForms“.
Klasės modulyje gali būti su programa susijęs kodas - tai būtų pati „Excel“ ir įterptosios diagramos.
Per ateinančias savaites pamoką aptarsiu kaip atskirą pamoką.
Atminkite, kad, išskyrus „OnTime“ ir „OnKey“ įvykius, nė vienas iš pirmiau minėtų įvykių negali būti saugomas įprastame VBA modulyje.Įvykių sekos supratimas
Kai suaktyvinate įvykį, jis nevyksta atskirai. Tai taip pat gali sukelti kelių aktyviklių seką.
Pavyzdžiui, kai įterpiate naują darbalapį, atsitinka šie dalykai:
- Pridedamas naujas darbalapis
- Ankstesnis darbalapis išjungiamas
- Suaktyvinamas naujas darbalapis
Nors daugeliu atvejų jums nereikės nerimauti dėl sekos, jei kuriate sudėtingus kodus, pagrįstus įvykiais, geriau žinoti seką, kad išvengtumėte netikėtų rezultatų.
Argumentų vaidmens VBA renginiuose supratimas
Prieš pereidami prie įvykių pavyzdžių ir nuostabių dalykų, kuriuos galite su juo padaryti, turiu aptarti vieną svarbią sąvoką.
VBA renginiuose būtų dviejų tipų kodai:
- Be jokių argumentų
- Su argumentais
Ir šiame skyriuje noriu greitai aptarti argumentų vaidmenį.
Žemiau yra kodas, kuriame nėra argumentų (skliausteliai yra tušti):
Privati antrinė darbo knyga_Atidaryti () „MsgBox“ „Nepamirškite užpildyti darbo laiko apskaitos žiniaraščio“ pabaiga
Naudojant aukščiau nurodytą kodą, kai atidarote darbaknygę, ji tiesiog rodo pranešimų laukelį su pranešimu - „Nepamirškite užpildyti darbo laiko apskaitos žiniaraščio“.
Dabar pažvelkime į kodą, kuriame yra argumentas.
Privatus antrinis darbo knyga_Naujas lapas (ByVal Sh kaip objektas) Sh.Range ("A1") = Sh.Name End Sub
Pirmiau pateiktame kode naudojamas argumentas Sh, kuris apibrėžiamas kaip objekto tipas. Argumentas Sh gali būti darbalapis arba diagramos lapas, nes minėtas įvykis suaktyvinamas pridedant naują lapą.
Priskirdamas naują lapą, pridėtą prie darbaknygės, objekto kintamajam Sh, VBA leido mums jį naudoti kode. Taigi, norėdamas nurodyti naują lapo pavadinimą, galiu naudoti Sh.Name.
Argumentų koncepcija bus naudinga, kai peržiūrėsite VBA įvykių pavyzdžius kituose skyriuose.
Darbaknygės lygio įvykiai (paaiškinta pavyzdžiais)
Toliau pateikiami dažniausiai naudojami įvykiai darbo knygoje.
RENGINIO PAVADINIMAS | KAS ĮVYKIA RENGINĮ |
Suaktyvinti | Kai suaktyvinama darbo knyga |
AfterSave | Kai darbo knyga įdiegiama kaip priedas |
Prieš Išsaugoti | Kai darbo knyga išsaugoma |
Prieš Uždaryti | Kai darbo knyga uždaryta |
BeforePrint | Kai spausdinama darbo knyga |
Išjungti | Kai darbo knyga išjungta |
NewSheet | Kai pridedamas naujas lapas |
Atviras | Kai atidaroma darbo knyga |
„SheetActivate“ | Kai suaktyvinamas bet kuris darbo knygos lapas |
SheetBeforeDelete | Kai bet kuris lapas ištrinamas |
„SheetBeforeDoubleClick“ | Dukart spustelėjus bet kurį lapą |
„SheetBeforeRightClick“ | Kai bet kuris lapas spustelėjamas dešiniuoju pelės klavišu |
SheetCalculate | Kai bet kuris lapas apskaičiuojamas arba perskaičiuojamas |
„SheetDeactivate“ | Kai darbo knyga išjungta |
„SheetPivotTableUpdate“ | Kai darbo knyga atnaujinama |
SheetSelectionChange | Kai keičiama darbo knyga |
„WindowActivate“ | Kai suaktyvinama darbo knyga |
„WindowDeactivate“ | Kai darbo knyga išjungta |
Atminkite, kad tai nėra išsamus sąrašas. Visą sąrašą galite rasti čia.
Atminkite, kad darbaknygės įvykio kodas saugomas „ThisWorkbook“ objektų kodo lange.
Dabar pažvelkime į kai kuriuos naudingus darbaknygės įvykius ir pažiūrėkime, kaip juos galima panaudoti kasdieniame darbe.
Atviras darbo knygos įvykis
Tarkime, kad norite parodyti vartotojui draugišką priminimą užpildyti jo darbo laiko apskaitos žiniaraščius, kai jis atidaro konkrečią darbo knygą.
Norėdami tai padaryti, galite naudoti žemiau esantį kodą:
Privati antrinė darbo knyga_Atidaryti () „MsgBox“ „Nepamirškite užpildyti darbo laiko apskaitos žiniaraščio“ pabaiga
Dabar, kai tik atidarysite darbaknygę, kurioje yra šis kodas, ji parodys pranešimų laukelį su nurodytu pranešimu.
Dirbant su šiuo kodu (arba apskritai darbaknygės įvykių kodais) reikia žinoti keletą dalykų:
- Jei darbaknygėje yra makrokomanda ir norite ją išsaugoti, turite ją išsaugoti .XLSM formatu. Priešingu atveju makro kodas bus prarastas.
- Pirmiau pateiktame pavyzdyje įvykio kodas bus vykdomas tik tada, kai įjungtos makrokomandos. Galite matyti geltoną juostą, kurioje prašoma leidimo įgalinti makrokomandas. Kol tai neįjungta, įvykio kodas nevykdomas.
- Darbaknygės įvykio kodas yra įtrauktas į „ThisWorkbook“ objekto kodo langą.
Galite dar patikslinti šį kodą ir rodyti pranešimą tik penktadienį.
Žemiau pateiktas kodas tai padarys:
Privati antrinė darbo knyga_Atidaryti () wkday = savaitės diena (data) Jei wkday = 6, tada „MsgBox“ „Nepamirškite užpildyti darbo laiko apskaitos žiniaraščio“ pabaigos
Atminkite, kad funkcijoje Savaitės diena sekmadieniui priskiriama vertė 1, pirmadieniui - 2 ir pan.
Taigi penktadienį naudojau 6.
Renginys „Darbaknygės atidarymas“ gali būti naudingas daugeliu atvejų, pavyzdžiui:
- Kai norite atidaryti darbaknygę asmeniui parodyti sveikinimo pranešimą.
- Kai norite, kad atidarius darbaknygę būtų rodomas priminimas.
- Kai norite visada suaktyvinti vieną konkretų darbalapį darbo knygoje, kai jis atidaromas.
- Kai norite atidaryti susijusius failus kartu su darbaknyge.
- Kai norite užfiksuoti datos ir laiko žymę kiekvieną kartą, kai atidaroma darbaknygė.
Darbaknygės „NewSheet“ įvykis
„NewSheet“ įvykis suaktyvinamas įterpiant naują lapą į darbaknygę.
Tarkime, kad norite įvesti datos ir laiko reikšmę naujai įterpto lapo A1 langelyje. Norėdami tai padaryti, galite naudoti žemiau esantį kodą:
Privatus antrinis darbaknygės_Naujas lapas („ByVal Sh“ kaip objektas) Klaida Tęsti kitą Sh.Range („A1“) = Formatas (dabar, „dd-mmm-yyyy hh: mm: ss“) Pabaiga
Aukščiau pateiktas kodas naudoja „On Error Resume Next“, kad būtų tvarkomi atvejai, kai kas nors įterpia diagramos lapą, o ne darbalapį. Kadangi diagramos lape nėra langelio A1, jame būtų rodoma klaida, jei nebus naudojamas „On Error Resume Next“.
Kitas pavyzdys gali būti tada, kai norite pritaikyti tam tikrus pagrindinius nustatymus ar formatavimą naujam lapui, kai tik jis pridedamas. Pavyzdžiui, jei norite pridėti naują lapą ir norite, kad jis automatiškai gautų serijos numerį (iki 100), galite naudoti žemiau esantį kodą.
Privatus antrinis darbo knyga_Naujas lapas (ByVal Sh kaip objektas) Dėl klaidos Tęskite toliau naudodami „Sh.Range“ („A1“). Vertė = „S. Nr.“ .Interior.Color = vbBlue .Font.Color = vbBalta pabaiga su For = 1 iki 100 Sh.Range ("A1"). Poslinkis (i, 0) .Vertė = i Kitas i Sh.Range ("A1", diapazonas ("A1"). Pabaiga (xlDown)). Borders.LineStyle = xlContinuous End Sub
Aukščiau pateiktas kodas taip pat šiek tiek formato. Tai antraštės langeliui suteikia mėlyną spalvą ir šriftas tampa baltas. Ji taip pat taiko kraštą visoms užpildytoms ląstelėms.
Aukščiau pateiktas kodas yra pavyzdys, kaip trumpas VBA kodas gali padėti pavogti kelias sekundes kiekvieną kartą, kai įterpiate naują darbalapį (jei tai turite padaryti kiekvieną kartą).
Darbaknygė „BeforeSave“ įvykis
Prieš suaktyvinant įvykį Išsaugoti, kai išsaugote darbaknygę. Atminkite, kad įvykis pirmiausia suaktyvinamas, o tada išsaugoma darbaknygė.
Įrašant „Excel“ darbaknygę, gali būti du galimi scenarijai:
- Išsaugote jį pirmą kartą ir bus rodomas dialogo langas Išsaugoti kaip.
- Jūs jau išsaugojote jį anksčiau ir jis tiesiog išsaugos ir perrašys jau išsaugotos versijos pakeitimus.
Dabar pažvelkime į keletą pavyzdžių, kuriuose galite naudoti įvykį „BeforeSave“.
Tarkime, kad pirmą kartą išsaugote naują darbaknygę ir norite priminti vartotojui ją išsaugoti K diske, tada galite naudoti žemiau esantį kodą:
Privatus antrinis darbaknygės_BeforeSave (ByVal SaveAsUI kaip loginis, atšaukti kaip loginis) Jei SaveAsUI Tada MsgBox „Išsaugoti šį failą K diske“ pabaigos poskyris
Jei failas anksčiau nebuvo išsaugotas, „SaveAsUI“ yra teisingas ir parodomas dialogo langas „Išsaugoti kaip“. Pirmiau pateiktas kodas parodys pranešimą prieš pasirodant dialogo langui Išsaugoti kaip.
Kitas pavyzdys galėtų būti datos ir laiko atnaujinimas, kai failas išsaugomas konkrečiame langelyje.
Žemiau pateiktas kodas įterptų datos ir laiko žymę į 1 lapo A1 langelį, kai failas išsaugomas.
Privatus antrinis darbaknygės_BeforeSave (ByVal SaveAsUI kaip loginis, atšaukti kaip loginis) darbalapiai („Sheet1“). Diapazonas („A1“) = Formatas (dabar, „dd-mmm-yyyy hh: mm: ss“) Pabaiga
Atminkite, kad šis kodas vykdomas, kai tik vartotojas išsaugo darbaknygę. Jei darbaknygė įrašoma pirmą kartą, ji parodys dialogo langą Išsaugoti kaip. Tačiau kodas jau įvykdytas, kai pamatysite dialogo langą Įrašyti kaip. Jei nuspręsite atšaukti ir neišsaugoti darbaknygės, data ir laikas jau bus įvesti į langelį.
Darbo knyga prieš uždaryti įvykį
Įvykis „Uždaryti“ įvyksta prieš pat darbo knygos uždarymą.
Žemiau pateiktas kodas apsaugo visus darbalapius prieš uždarant darbaknygę.
Privatus antrinis darbaknygė_BeforeClose (Atšaukti kaip loginis) Dim sh kaip darbalapis kiekvienam sh šioje „Darbo knygoje“.
Atminkite, kad įvykio kodas suaktyvinamas, kai tik uždarote darbaknygę.
Svarbus dalykas, kurį reikia žinoti apie šį įvykį, yra tai, kad jam nesvarbu, ar darbo knyga iš tikrųjų uždaryta, ar ne.
Jei darbaknygė nebuvo išsaugota ir jums bus rodomas raginimas klausti, ar išsaugoti darbaknygę, ar ne, ir spustelėsite Atšaukti, jūsų darbaknygė nebus išsaugota.Tačiau įvykio kodas iki to laiko jau būtų įvykdytas.
Darbo knyga prieš spausdinimo įvykį
Kai duodate spausdinimo komandą (arba komandą Spausdinimo peržiūra), suaktyvinamas įvykis Prieš spausdinimą.
Žemiau pateiktas kodas perskaičiuos visus darbalapius prieš spausdinant jūsų darbaknygę.
Privatus antrinis darbaknygė_BeforePrint (atšaukti kaip loginis) kiekvienam ws darbalapio ws. Apskaičiuokite kitą ws pabaigos sub
Kai vartotojas spausdina darbaknygę, įvykis bus suaktyvintas, nesvarbu, ar jis spausdina visą darbaknygę, ar tik jos dalį.
Kitas žemiau pateiktas pavyzdys yra kodas, kuris pridėtų datą ir laiką poraštėje, kai spausdinama darbaknygė.
Privatus antrinis darbaknygės_BeforePrint (Atšaukti kaip loginis) Dim ws kaip darbalapis kiekvienam šio darbo knygos ws.PageSetup.LeftFooter = "Spausdintas-" ir formatas (dabar, "dd-mmm-yyyy hh: mm") Kitas ws End Sub
Darbo lapo lygio įvykiai (paaiškinta pavyzdžiais)
Darbo lapo įvykiai vyksta remiantis darbalapio aktyvikliais.
Toliau pateikiami dažniausiai naudojami įvykiai darbalapyje.
Įvykio pavadinimas | Kas sukelia įvykį |
Suaktyvinti | Kai suaktyvinamas darbalapis |
Prieš ištrinti | Prieš ištrinant darbalapį |
BeforeDoubleClick | Prieš du kartus spustelėdami darbalapį |
BeforeRightClick | Prieš spustelėdami darbalapį dešiniuoju pelės mygtuku |
Apskaičiuoti | Prieš skaičiuojant arba perskaičiuojant darbalapį |
Keisti | Pakeitus darbalapio langelius |
Išjungti | Kai darbalapis išjungtas |
„PivotTableUpdate“ | Kai darbalapio „Pivot“ lentelė atnaujinama |
PasirinkimasKeisti | Pakeitus pasirinkimą darbalapyje |
Atminkite, kad tai nėra išsamus sąrašas. Visą sąrašą galite rasti čia.
Atminkite, kad darbalapio įvykio kodas saugomas darbalapio objekto kodo lange (tame, kuriame norite, kad įvykis būtų suaktyvintas). Darbaknygėje gali būti keli darbalapiai, o jūsų kodas bus suaktyvintas tik tada, kai įvykis įvyks darbalapyje, į kurį jis įdėtas.
Dabar pažvelkime į kai kuriuos naudingus darbalapio įvykius ir pažiūrėkime, kaip juos galima panaudoti kasdieniame darbe.
Darbo lapas Aktyvinti įvykį
Šis įvykis suaktyvinamas, kai suaktyvinate darbalapį.
Žemiau pateiktas kodas apsaugo lapą, kai tik jis suaktyvinamas.
Privatus antrinis darbalapis_Aktyvinti () „ActiveSheet“. Atšaukti pabaigos pab
Taip pat galite naudoti šį įvykį, kad įsitikintumėte, jog kai tik suaktyvinate darbalapį, pasirinktas konkretus langelis arba langelių diapazonas (arba įvardytas diapazonas). Žemiau pateiktas kodas pasirinktų langelį D1, kai tik suaktyvinsite lapą.
Privatus antrinis darbalapis_Aktyvinti () „ActiveSheet.Range“ („D1“). Pasirinkite Pabaigos antraštė
Darbo lapo keitimo įvykis
Pakeitimo įvykis suaktyvinamas kiekvieną kartą, kai atliekate pakeitimus darbalapyje.
Na … ne visada.
Yra keletas pakeitimų, kurie sukelia įvykį, o kai kurie - ne. Štai keletas pakeitimų, kurie nesukels įvykio, sąrašas:
- Kai keičiate langelio formatą (šrifto dydis, spalva, kraštinė ir kt.).
- Kai sujungiate langelius. Tai stebina, nes kartais sujungus langelius turinys pašalinamas iš visų langelių, išskyrus viršutinį kairįjį.
- Kai pridedate, ištrinate arba redaguojate langelio komentarą.
- Kai rūšiuojate ląstelių diapazoną.
- Kai naudojate tikslo siekimą.
Šie pakeitimai sukeltų įvykį (net jei manote, kad to neturėtų būti):
- Įvykį suaktyvins kopijavimo ir įklijavimo formatavimas.
- Išvalius formatavimą įvykis būtų suaktyvintas.
- Rašybos tikrinimas sukeltų įvykį.
Žemiau yra kodas, kuriame būtų rodomas pranešimų langelis su pakeisto langelio adresu.
Privatus antrinis darbalapio keitimas („ByVal Target as Range“) „MsgBox“ „Ką tik pakeitėte“ ir „Target.Address End Sub“
Nors tai nenaudinga makrokomanda, ji parodo, kaip naudoti argumentą „Tikslas“, kad sužinotumėte, kurios ląstelės buvo pakeistos.
Dabar pažiūrėkime porą naudingesnių pavyzdžių.
Tarkime, kad turite langelių diapazoną (tarkime, A1: D10) ir norite parodyti raginimą ir paklausti vartotojo, ar jis tikrai norėjo pakeisti šio diapazono langelį, ar ne, galite naudoti žemiau esantį kodą.
Jame rodomas raginimas su dviem mygtukais - Taip ir Ne. Jei vartotojas pasirenka „Taip“, pakeitimas atliekamas, priešingu atveju jis pakeičiamas.
Privatus antrinis darbalapio keitimas („ByVal Target As Range“) Jei Target.Row <= 10 Ir Target.Column <= 4 Tada Ans = MsgBox ("Jūs keičiate langelius A1: D10. Ar tikrai to norite?", vbTaip ne
Pirmiau pateiktame kode mes patikriname, ar tikslinis langelis yra pirmuose 4 stulpeliuose ir pirmose 10 eilučių. Tokiu atveju rodomas pranešimų langas. Be to, jei vartotojas pranešimų laukelyje pasirinko Ne, pakeitimas bus atšauktas (komanda Application.Undo).
Atminkite, kad naudojau „Application.EnableEvents = False“ prieš „Application.Undo“. Ir tada aš jį pakeičiau naudodamas „Application.EnableEvent = True“ kitoje eilutėje.
To reikia, nes kai anuliavimas įvyksta, jis taip pat sukelia pakeitimo įvykį. Jei nenustatysiu „EnableEvent“ į „False“, jis ir toliau suaktyvins pakeitimo įvykį.
Taip pat galite stebėti pavadinto diapazono pakeitimus naudodami pakeitimo įvykį. Pavyzdžiui, jei turite pavadintą diapazoną, pavadintą „DataRange“, ir norite rodyti raginimą, jei vartotojas pakeistų šį pavadintą diapazoną, galite naudoti toliau nurodytą kodą:
Privatus antrinis darbalapio keitimas („ByVal“ tikslas kaip diapazonas) „Dim DRange“ kaip diapazonas Nustatykite DRange = Diapazonas („DataRange“) Jei nesusikerta (Tikslas, DRange) Nieko, tada „MsgBox“ Ką tik pakeitėte duomenų diapazoną „End If End Sub
Aukščiau pateiktas kodas tikrina, ar langelyje/diapazone, kuriame atlikote pakeitimus, yra duomenų diapazonui bendrų langelių. Jei taip, rodomas pranešimų laukelis.
Darbaknygės pasirinkimo keitimo įvykis
Pasirinkimo keitimo įvykis suaktyvinamas kiekvieną kartą, kai darbalapyje atliekamas pasirinkimo pakeitimas.
Žemiau pateiktas kodas perskaičiuos lapą, kai tik pakeisite pasirinkimą.
Privatus antrinis darbalapis_SelectionChange („ByVal Target As Range“) programa. Apskaičiuokite pabaigos antraštę
Kitas šio įvykio pavyzdys yra tada, kai norite paryškinti aktyvią pasirinkto langelio eilutę ir stulpelį.
Kažkas, kaip parodyta žemiau:
Šis kodas gali tai padaryti:
Privatus antrinis darbalapis_SelectionChange (ByVal Target As Range) Ląstelės.Interior.ColorIndex = xlNone Su ActiveCell .EntireRow.Interior.Color = RGB (248, 203, 173) .EntireColumn.Interior.Color = RGB (180, 198, 231) Su Pabaiga Sub
Kodas pirmiausia pašalina fono spalvą iš visų langelių, o tada ta, kuri nurodyta kode, aktyviai eilutei ir stulpeliui.
Ir tai yra šio kodo problema. Tai pašalina spalvą iš visų ląstelių.
Jei norite paryškinti aktyvią eilutę/stulpelį, nepažeisdami kitų langelių spalvos, naudokite šiame vadove parodytą metodą.
Darbaknygės „DoubleClick“ įvykis
Tai vienas iš mano mėgstamiausių darbalapio įvykių ir pamatysite daug vadovėlių, kuriuose aš tai panaudojau (pvz., Šį ar šį).
Šis įvykis suaktyvinamas dukart spustelėjus langelį.
Leiskite parodyti jums, kaip tai nuostabu.
Naudodami žemiau esantį kodą, galite dukart spustelėti langelį ir jis pritaikys fono spalvą, pakeis šrifto spalvą ir paryškins langelio tekstą;
Privatus antrinis darbalapis_BeforeDoubleClick („ByVal Target As Range“, atšaukti kaip „Boolean“) Cancel = True With Target .Interior.Color = vbBlue .Font.Color = vbWhite .Font.Bold = Tikroji pabaiga su pabaiga
Tai gali būti naudinga, kai peržiūrite langelių sąrašą ir norite paryškinti keletą pasirinktų. Nors galite naudoti klavišą F4, kad pakartotumėte paskutinį veiksmą, jis galėtų taikyti tik vienos rūšies formatavimą. Naudodami šį dvigubo paspaudimo įvykį, galite taikyti visus tris tik dukart spustelėdami.
Atminkite, kad aukščiau pateiktame kode aš padariau „Cancel = True“ reikšmę.
Tai daroma taip, kad numatytasis dvigubo paspaudimo veiksmas būtų išjungtas - tai yra patekti į redagavimo režimą. Jei atšauksite = tiesa, „Excel“ nepateks į redagavimo režimą, kai dukart spustelėsite langelį.
Štai dar vienas pavyzdys.
Jei „Excel“ turite darbų sąrašą, galite naudoti dvigubo paspaudimo įvykį, kad pritaikytumėte perbraukimo formatą, kad pažymėtumėte užduotį kaip atliktą.
Kažkas, kaip parodyta žemiau:
Čia yra kodas, kuris tai padarys:
Privatus antrinis darbalapis_BeforeDoubleClick („ByVal Target As Range“, atšaukti kaip „Boolean“) Cancel = True CurrFormat = Target.Font.Strikethrough If CurrFormat then Target.Font.Strikethrough = False Else Target.Font.Strikethrough = Tikroji pabaiga
Atminkite, kad šiame kode aš dukart spustelėjau kaip perjungimo įvykį. Dukart spustelėjus langelį, jis patikrina, ar perbraukimo formatas jau pritaikytas. Jei taip buvo, dukart spustelėjus pašalinamas perbraukimo formatas, o jei nebuvo, tada taikomas perbraukimo formatas.
„Excel VBA OnTime“ įvykis
Įvykiai, kuriuos iki šiol matėme šiame straipsnyje, buvo susieti su vienu iš „Excel“ objektų, nesvarbu, ar tai būtų darbaknygė, darbalapis, diagramos lapas ar „UserForms“ ir kt.
„OnTime“ įvykis skiriasi nuo kitų įvykių, nes jis gali būti saugomas įprastame VBA modulyje (o kiti turėjo būti patalpinti į objektų, tokių kaip „ThisWorkbook“ arba „Worksheets“ arba „UserForms“, kodo langą).
Įprastame VBA modulyje jis naudojamas kaip taikymo objekto metodas.
Priežastis, dėl kurios tai laikoma įvykiu, yra ta, kad ji gali būti suaktyvinta pagal jūsų nurodytą laiką. Pavyzdžiui, jei noriu, kad lapas perskaičiuotų kas 5 minutes, galiu naudoti įvykį „OnTime“.
Arba, jei noriu parodyti pranešimą/priminimą tam tikru paros metu, galiu naudoti „OnTime“ įvykį.
Žemiau yra kodas, kuris kiekvieną dieną 14 valandą parodys pranešimą.
Sub MessageTime () Application.OnTime TimeValue ("14:00:00"), "ShowMessage" Pabaiga Sub Show ShowMessage () MsgBox "Tai pietų laikas" Pabaiga
Atminkite, kad šį kodą turite įdėti į įprastą VBA modulį,
Be to, nors įvykis „OnTime“ būtų suaktyvintas nurodytu laiku, makrokomandą bet kuriuo metu turite paleisti rankiniu būdu. Kai paleisite makrokomandą, ji palauks, kol bus 14 val., Tada iškvies makrokomandą „ShowMessage“.
Tada „ShowMessage“ makrokomanda parodys pranešimą.
„OnTime“ įvykis turi keturis argumentus:
Application.OnTime (Anksčiausias laikas, Procedūra, „LatestTime“, Tvarkaraštis)
- Anksčiausias laikas: Laikas, kai norite atlikti procedūrą.
- Procedūra: Procedūros, kurią reikia atlikti, pavadinimas.
- „LatestTime“ (pasirenkama): Jei veikia kitas kodas ir jūsų nurodyto kodo negalima paleisti nurodytu laiku, galite nurodyti „LatestTime“, kurio jis turėtų laukti. Pavyzdžiui, tai gali būti „EarliestTime + 45“ (tai reiškia, kad ji lauks 45 sekundes, kol bus baigta kita procedūra). Jei net po 45 sekundžių procedūra negali būti vykdoma, jos atsisakoma. Jei to nenurodysite, „Excel“ palauktų, kol bus galima paleisti kodą, ir paleis jį.
- Tvarkaraštis (neprivaloma): Jei nustatyta „True“, ji suplanuoja naują laiko procedūrą. Jei klaidinga, tai atšaukia anksčiau nustatytą procedūrą. Pagal numatytuosius nustatymus tai yra tiesa.
Pirmiau pateiktame pavyzdyje mes panaudojome tik pirmuosius du argumentus.
Pažvelkime į kitą pavyzdį.
Žemiau pateiktas kodas atnaujintų darbalapį kas 5 minutes.
Dim NextRefresh as Date Sub RefreshSheet () ThisWorkbook.Worksheets ("Sheet1"). Apskaičiuokite NextRefresh = Now + TimeValue ("00:05:00") Application.OnTime NextRefresh, "RefreshSheet" Pabaigos antrinis sustabdymasRefresh () Klaidos atnaujinimas Kitas Application.OnTime NextRefresh, "RefreshSheet",, False End Sub
Aukščiau pateiktas kodas atnaujintų darbalapį kas 5 minutes.
Jis naudoja funkciją Dabar, kad nustatytų esamą laiką, ir tada prideda 5 minutes prie esamo laiko.
„OnTime“ įvykis bus tęsiamas tol, kol jo nesustabdysite. Jei uždarote darbaknygę ir programa „Excel“ vis dar veikia (kitos darbaknygės atidarytos), darbaknygė, kurioje yra įvykis „OnTime“, atsidarys iš naujo.
Tai geriau išspręsti specialiai sustabdžius „OnTime“ įvykį.
Pirmiau pateiktame kode aš turiu „StopRefresh“ kodą, bet jūs turite jį įvykdyti, kad sustabdytumėte „OnTime“ įvykį. Tai galite padaryti rankiniu būdu, priskirti jį mygtukui ir tai padaryti paspausdami mygtuką arba paskambinę iš darbaknygės uždarymo įvykio.
Privatus antrinis darbo knyga_BeforeClose (Atšaukti kaip loginis) Skambinti StopRefresh End Sub
Aukščiau pateiktas „BeforeClose“ įvykio kodas patenka į „ThisWorkbook“ kodo langą.
„Excel VBA OnKey“ įvykis
Kai dirbate su „Excel“, ji nuolat stebi naudojamus klavišų paspaudimus. Tai leidžia mums naudoti klavišų paspaudimus kaip įvykį.
Naudodami „OnKey“ įvykį, galite nurodyti klavišų paspaudimą (arba klavišų kombinaciją) ir kodą, kuris turėtų būti vykdomas naudojant tą klavišo paspaudimą. Paspaudus šiuos klavišų paspaudimus, jis įvykdys jo kodą.
Kaip ir „OnTime“ renginys, turite turėti būdą atšaukti „OnKey“ įvykį. Be to, kai nustatote OnKey įvykį konkrečiam klavišo paspaudimui, jis tampa prieinamas visose atidarytose darbaknygėse.
Prieš parodydamas „OnKey“ įvykio naudojimo pavyzdį, leiskite man pirmiausia pasidalyti pagrindiniais kodais, kurie jums prieinami VBA.
RAKTAS | KODAS |
Backspace | {BACKSPACE} arba {BS} |
Pertrauka | {PERTRAUKA} |
Didžiosios raidės | {DIDŽIOSIOS RAIDĖS} |
Ištrinti | {DELETE} arba {DEL} |
Rodyklė žemyn | {DOWN} |
Galas | {GALAS} |
Įveskite | ~ |
Įveskite („Nueric“ klaviatūroje) | {ENTER} |
Pabegti | {ESCAPE} arba {ESC} |
Namai | {NAMAI} |
Ins | {ĮDĖTI} |
Rodyklė kairėn | {LEFT} |
„NumLock“ | {NUMLOCK} |
PageDown | {PGDN} |
Į viršų | {PGUP} |
Dešinė rodyklė | {RIGHT} |
Ridenimo užraktas | {SCROLLOCK} |
Tab | {TAB} |
Rodyklė aukštyn | {AUKŠTYN} |
F1 - F15 | {F1} - {F15} |
Kai reikia naudoti bet kurį „onkey“ įvykį, turite naudoti jo kodą.
Aukščiau esančioje lentelėje yra pavienių klavišų paspaudimų kodai.
Taip pat galite juos sujungti su šiais kodais:
- Pamaina: + (Pliuso ženklas)
- Kontrolė: ^ (Caret)
- Alt: % (Procentas)
Pavyzdžiui, „Alt F4“ turite naudoti kodą: „%{F4}“ - kur % yra ALT klavišas, o {F4} - F4 klavišas.
Dabar pažvelkime į pavyzdį (nepamirškite, kad „OnKey“ įvykių kodas yra įprastame VBA modulyje).
Paspaudus klavišą „PageUp“ arba „PageDown“, jis šokinėja 29 eilutes virš/žemiau aktyvios ląstelės (bent jau tai daro mano nešiojamas kompiuteris).
Jei norite, kad vienu metu pereitų tik 5 eilutės, galite naudoti žemiau esantį kodą:
Sub PageUpDOwnKeys () Application.OnKey "{PgUp}", "PageUpMod" Application.OnKey "{PgDn}", "PageDownMod" Pabaigos antrinis puslapis PageUpMod () Įvyko klaida Tęsti kitą ActiveCell.Offset (-5, 0) .Activate End Antrasis antrinis puslapisDownMod () Įvyko klaida Tęsti kitą „ActiveCell“. Poslinkis (5, 0). Aktyvinti pabaigos antrinį elementą
Kai vykdote pirmąją kodo dalį, ji vykdys „OnKey“ įvykius. Kai tai bus įvykdyta, naudojant „PageUp“ ir „PageDown“ klavišą, žymeklis vienu metu pereis tik 5 eilutes.
Atminkite, kad mes naudojome „On Error Resume Next“, kad įsitikintume, jog klaidos nepaisomos. Šios klaidos gali atsirasti paspaudus „PageUp“ klavišą, net kai esate darbalapio viršuje. Kadangi nebėra daugiau einančių eilučių, kodas rodys klaidą. Bet kadangi mes naudojome „On Error Resume Next“, tai bus ignoruojama.
Kad įsitikintumėte, jog šie „OnKey“ įvykiai yra prieinami, turite paleisti pirmąją kodo dalį. Jei norite, kad tai būtų pasiekiama vos atidarius darbaknygę, galite tai įdėti į „ThisWorkbook“ kodo langą.
„Private Sub Workbook_Open () Application.OnKey“ {PgUp} “,„ PageUpMod “Application.OnKey„ {PgDn} “,„ PageDownMod “pabaiga
Žemiau pateiktas kodas grąžins raktams įprastas funkcijas.
Sub Cancel_PageUpDownKeysMod () Application.OnKey "{PgUp}" Application.OnKey "{PgDn}" pabaiga
Kai nenurodysite antrojo „OnKey“ metodo argumento, jis grąžins įprastą klavišo funkciją.
Jei norite atšaukti klavišo paspaudimo funkciją, kad „Excel“ nieko nedarytų, kai naudojamas šis klavišo paspaudimas, kaip antrą argumentą turite naudoti tuščią eilutę.
Žemiau esančiame kode „Excel“ nieko nedarytų, kai naudojame klavišus „PageUp“ arba „PageDown“.
Sub Ignore_PageUpDownKeys () Application.OnKey "{PgUp}", "" Application.OnKey "{PgDn}", "" Pabaiga
Įvykių išjungimas VBA
Kartais, norint, kad kodas tinkamai veiktų, gali tekti išjungti įvykius.
Pavyzdžiui, tarkime, kad turiu diapazoną (A1: D10) ir noriu parodyti pranešimą, kai šiame diapazone pakeičiamas langelis. Taigi parodau pranešimų laukelį ir klausiu vartotojo, ar jis tikras, kad nori atlikti pakeitimą. Jei atsakymas yra „Taip“, pakeitimas padarytas, o jei atsakymas yra „Ne“, VBA jį anuliuos.
Galite naudoti žemiau esantį kodą:
Privatus antrinis darbalapio keitimas („ByVal Target As Range“) Jei Target.Row <= 10 Ir Target.Column <= 4 Tada Ans = MsgBox ("Jūs keičiate langelius A1: D10. Ar tikrai to norite?", vbTaip Ne
Šio kodo problema yra ta, kad vartotojui pasirinkus „Ne“ pranešimų laukelyje, veiksmas yra atvirkštinis (kaip aš naudojau „Application.Undo“).
Kai anuliavimas įvyksta ir vertė pakeičiama į pradinę, VBA pakeitimo įvykis vėl suaktyvinamas ir vartotojui vėl rodomas tas pats pranešimų laukelis.
Tai reiškia, kad galite ir toliau spustelėti NE pranešimų laukelyje ir jis ir toliau bus rodomas. Taip atsitinka, kai šiuo atveju įstrigote begalinėje kilpoje.
Kad išvengtumėte tokių atvejų, turite išjungti įvykius, kad pakeitimo įvykis (ar bet kuris kitas įvykis) nebūtų suaktyvintas.
Šis kodas gerai veiktų šiuo atveju:
Privatus antrinis darbalapio keitimas („ByVal Target As Range“) Jei Target.Row <= 10 Ir Target.Column <= 4 Tada Ans = MsgBox ("Jūs keičiate langelius A1: D10. Ar tikrai to norite?", vbYesNo) Pabaiga Jei If Ans = vbNo Tada Application.EnableEvents = False Application. Anuliuoti Application.EnableEvents = True End If End Sub
Pirmiau pateiktame kode, tiesiai virš programos. Atšaukti eilutę, mes naudojome - Application.EnableEvents = False.
Nustačius „EnableEvents“ į „False“, nebus suaktyvintas nė vienas įvykis (dabartinėje ar bet kurioje atidarytoje darbaknygėje).
Baigę anuliavimo operaciją, galime įjungti „EnableEvents“ ypatybę į „True“.
Atminkite, kad įvykių išjungimas turi įtakos visoms darbo knygoms, kurios šiuo metu atidaromos (arba atidaromos, kai „EnableEvents“ nustatyta kaip „False“). Pvz., Kaip kodo dalis, jei atidarote naują darbaknygę, įvykis „Darbaknygės atidarymas“ neveiks.
Įvykių poveikis Anuliuoti kaminą
Pirmiausia pasakysiu, kas yra „Undo Stack“.
Kai dirbate „Excel“, ji nuolat stebi jūsų veiksmus. Kai padarote klaidą, visada galite naudoti „Control“ + Z, kad grįžtumėte į ankstesnį veiksmą (t. Y. Anuliuotumėte dabartinį veiksmą).
Jei du kartus paspausite „Control + Z“, bus atlikti du žingsniai atgal. Šie jūsų atlikti veiksmai yra saugomi kaip anuliavimo kamino dalis.
Bet koks įvykis, pakeitęs darbalapį, sunaikina šį anuliavimo krūvą.Tai reiškia, kad jei padariau 5 dalykus prieš suaktyvindamas įvykį, negalėsiu naudoti „Control + Z“, kad grįžčiau prie tų ankstesnių veiksmų. Įvykio sukėlimas man sunaikino tą krūvą.
Žemiau esančiame kode aš naudoju VBA, norėdamas įvesti laiko žymę į langelį A1, kai pasikeičia darbalapis.
Privatus antrinis darbalapio keitimas („ByVal Target As Range“) Application.EnableEvents = klaidingas diapazonas („A1“). Vertė = formatas (dabar, „dd-mmm-yyyy hh: mm: ss“) Application.EnableEvents = Tikrojo pabaigos sub
Kadangi aš keičiu darbalapį, tai sunaikins anuliavimo krūvą.
Taip pat atminkite, kad tai neapsiriboja tik įvykiais.
Jei turite kodą, saugomą įprastame VBA modulyje, ir atliksite pakeitimus darbalapyje, jis taip pat sunaikins „Excel“ anuliavimo krūvą.
Pvz., Žemiau pateiktas kodas tiesiog įveskite tekstą „Labas“ į langelį A1, tačiau net paleidus jį, anuliuotumėte krūvą.
Antrinis tipasSveiki () diapazonas ("A1"). Reikšmė = "Labas" Pabaiga
Jums taip pat gali patikti šios „Excel VBA“ pamokos:
- Darbas su ląstelėmis ir diapazonais „Excel VBA“.
- Darbas su darbalapiais „Excel VBA“.
- Darbas su darbaknygėmis „Excel VBA“.
- „Excel VBA Loops“ - galutinis vadovas.
- „IF Then Else Statement“ naudojimas „Excel VBA“.
- Kitas ciklas „Excel“.
- Vartotojo nustatytų funkcijų kūrimas „Excel VBA“.
- Kaip sukurti ir naudoti priedus „Excel“.
- Sukurkite ir pakartotinai naudokite makrokomandas išsaugodami asmeninėje makrokomandos darbaknygėje.