„Neatidėliotinas langas“ gali būti naudingas įrankis dirbant su VBA „Excel“.
„Neatidėliotinas“ langas leidžia greitai atlikti tokius veiksmus kaip:
- Gaukite informacijos apie „Excel“ failus (pvz., Lapų skaičių darbaknygėje arba darbaknygės pavadinimą)
- Gaukite derinimą. Greitai išspausdinkite informaciją
- Paleiskite kodo eilutę per kelias sekundes
- Vykdyti makrokomandą (arba iškviesti funkciją)
- Gaukite informacijos apie kintamuosius (arba nustatykite vertę ar kintamuosius)
Nors jums nereikia naudoti tiesioginio lango, kad galėtumėte dirbti su „VBA“ „Excel“, tačiau žinodami, kaip jį gerai naudoti, galite būti daug efektyvesni.
Šioje pamokoje aptarsiu viską, ką reikia žinoti apie tiesioginį langą ir kaip jį geriausiai panaudoti (paaiškinta pavyzdžiais).
Pradėkime!
Kas yra neatidėliotinas „Excel VBA“ langas?
Neatidėliotinas langas yra VB redaktoriaus dalis, kurią galite naudoti norėdami greitai atlikti tam tikrus veiksmus.
Pavyzdžiui, jei turite darbaknygę su kai kuriais paslėptais darbalapiais ir norite greitai sužinoti visų darbo lapų skaičių, tai galite padaryti per kelias sekundes naudodami langą „Iškart“.
„Immediate Window“ daro daug daugiau (kaip pamatysite vėliau šioje pamokoje). Bet pirmiausia pagalvokime apie tiesioginį langą kaip įrankį, padedantį pagreitinti darbą „Excel VBA“.
Kur rasti neatidėliotiną langą?
Kai atidarote „Excel“ VB redaktorių, galite matyti tiesioginį langą kaip VB redaktoriaus dalį. Ir jei to dar nematote, galite lengvai jį parodyti.
Žemiau yra žingsniai, kaip atidaryti VB redaktorių ir padaryti matomą neatidėliotiną langą:
- „Excel“ juostelėje spustelėkite skirtuką „Kūrėjas“ (jei nematote kūrėjo skirtuko, spustelėkite čia, kad sužinotumėte, kaip jį gauti)
- Kodo grupėje spustelėkite „Visual Basic“. Tai atidarys VB redaktorių
- VB redaktoriuje spustelėkite meniu parinktį „Peržiūrėti“
- Spustelėkite „Neatidėliotinas langas“. Dėl to nedelsiant pasirodys langas VB redaktoriuje.
Jei jums patogiau naudoti sparčiuosius klavišus, toliau pateikiami keli būdai, kaip pagreitinti aukščiau nurodytus veiksmus:
- Norėdami atidaryti VB redaktorių - ALT + F11 (tai veikia net jei juostelėje nėra skirtuko Kūrėjas)
- Norėdami parodyti tiesioginį langą - „Control“ + G. (naudokite šį, VB redaktorius yra atidarytas)
Neatidėliotino lango naudojimo „Excel VBA“ pavyzdžiai
Dabar, kai žinote, kur rasti tiesioginį langą, pažiūrėkime keletą nuostabių pavyzdžių, kuriuos galite naudoti dirbdami su „Excel VBA“.
Gaukite informacijos apie failus/darbaknyges
„Neatidėliotinas langas“ yra vieta, kurioje galite užduoti klausimus apie darbo knygas ir iš karto atsakysite.
Pvz., Tarkime, kad turite darbaknygę ir norite sužinoti, kiek lapų yra darbaknygėje, galite įvesti žemiau esantį kodą tiesioginiame lange ir paspausti įvesties klavišą.
? ActiveWorkbook.Sheets.Count
Tai iš karto parodys bendrą aktyvios darbo knygos lapų skaičių.
Tai gali būti naudinga, kai turite darbaknygę, kurioje yra daug lapų ir negalite jos suskaičiuoti rankiniu būdu (arba nenorite), arba kai turite darbaknygę, kurioje yra paslėptų lapų ir norite sužinoti bendrą skaičių skaičiuoti.
The? (klaustukas) turėtų būti naudojamas prieš užklausą, kad VBA suprastų, jog užduodate klausimą. Jei nenaudosite šio klaustuko, tiesioginis langas nepateiks jums išsamios informacijos/atsakymo.Dabar tai tikrai paprastas pavyzdys, kai „Immediate Window“ suteikia jums informacijos ir taupo laiką.
Žemiau yra dar keletas pavyzdžių:
Norėdami gauti aktyvios darbaknygės pavadinimą
? ActiveWorkbook.Name
Norėdami gauti aktyvaus lapo pavadinimą
? Veiklos lapas. Pavadinimas
Norėdami gauti darbaknygės kelią (adresą, kuriame jis išsaugotas)
? ActiveWorkbook.Path
Taigi, jei jums reikia kažko apie objektą (pvz., Darbaknygę, lapus, diagramas, figūras, diapazoną ir tt), galite naudoti tiesioginį langą, kad greitai gautumėte šią informaciją.
Gaukite derinimo. Spausdinti informaciją
„Excel VBA“ sistemoje „Debug.Print“ naudojama kintamojo reikšmei akimirksniu parodyti tiesioginiame lange.
Pavyzdžiui, žemiau pateiktas kodas akimirksniu parodys pranešimą „Labas rytas“ tiesioginiame lange.
Sub DisplayMessage () Debug.Print "Labas rytas" pabaigos sub
Galite naudoti kodo „Debug.Print“ eilutę, kad greitai gautumėte tam tikrų duomenų tiesioginiame lange arba derintumėte kodą.
Pavyzdžiui, jei norite gauti visų darbaknygės lapų pavadinimus, galite naudoti žemiau esantį kodą:
„GetSheetNames“ () „ActiveWorkbook“ kiekvienos schemos antraštė
Aukščiau pateiktas kodas eina per kiekvieną aktyvios darbaknygės lapą ir suteikia pavadinimą tiesioginiame lange.
Derinimas. Spausdinimas yra naudinga jūsų kodo derinimo technika. Pvz., Jei vykdote ciklą ir norite pamatyti, kiek kartų ciklas buvo paleistas, galite tiesiog įdėti „Debug.Print“ eilutę, kurioje tiesiog rodomi didėjantys skaičiai, kai vykdoma kiekviena kilpa.
Jei naudojate Derinti. Spausdinti Norėdami derinti kodą, nepamirškite jį pašalinti, kai baigsite.
Vykdyti makrokomandą (arba funkciją)
Nors „Excel“ makrokomandą galima paleisti įvairiais būdais, vienas iš greitų būdų yra tiesioginio lango naudojimas.
Norėdami paleisti makrokomandą, tiesiog įveskite makrokomandos pavadinimą tiesioginiame lange ir paspauskite klavišą Enter (kad tai veiktų, žymeklis turi būti makrokomandos pavadinimo pabaigoje).
Žemiau pateikiamas pavyzdys, kai, kai tik įvedate makrokomandos pavadinimą tiesioginiame lange, jis paleidžia kodą (kai kodas rodo pranešimą „Labas rytas“ tiesioginiame lange).
Tai gali būti naudinga, kai turite kodą ir norite patikrinti, ar jis veikia taip, kaip tikėtasi, ar ne. Galite turėti vieną ar daugiau derinimo. Išspausdinkite eilutes kodu ir paleiskite makrokomandą iš tiesioginio lango.
Tai iškart parodys vertes tiesioginiame lange ir galėsite patikrinti, ar viskas veikia gerai, ar ne.
Taip pat galite naudoti tiesioginį langą, kad atliktumėte pasirinktines funkcijas.
Pavyzdžiui, žemiau pateiktame pavyzdyje sukurta funkcija, skirta patikrinti, ar skaičius yra lyginis ar nelyginis. Šią funkciją galite paleisti iš tiesioginio lango, įvesdami funkciją su reikiamu argumentu. Tokiu atveju turite naudoti klaustuką, kai prašote, kad jis negrąžintų funkcijoje išsaugotos vertės.
Vykdyti kodo eilutę (arba kelias kodo eilutes)
Naudodami tiesioginį langą taip pat galite paleisti kodo eilutę (arba kelias kodų eilutes).
Geriausia tai, kad galite tiesiog atidaryti tiesioginį langą, paleisti kodą ir uždaryti (skirtingai nei makrokomanda, kurią turite įdėti į modulio langą ir tada vykdyti).
Tai gali būti naudinga, kai norite greitai atskleisti visus darbaknygės lapus.
Žemiau yra kodas, kurį galite įdėti į tiesioginį langą, kad būtų parodyti visi darbo knygos lapai. Padėkite žymeklį eilutės pabaigoje ir kai tik paspausite įvesties klavišą, visi lapai bus rodomi.
Kiekvienam šios darbo knygos lapui. Lakštai: lapas. Matomas = tiesa: kitas lapas
Atminkite, kad nors tai atrodo kaip viena kodo eilutė, ją sudaro trys dalys.
Kiekviena dalis yra atskirta: (dvitaškis), kuris veikia kaip eilutės pertrauka. Tai leidžia naudoti tiesioginio lango ciklą „Kitas“, kad pereitumėte kiekvieną lapą ir pakeistumėte matomą ypatybę į „TRUE“ (kuri parodo visus paslėptus lapus).
Gaukite kintamas vertes
Pradėdami kurti sudėtingus VBA kodus, atlikdami darbą turėsite pasikliauti kintamaisiais.
Kintamasis yra kažkas, kas turi reikšmę, ir ši vertė gali pasikeisti, kai kodas veikia. Norėdami patikrinti šias kintamųjų reikšmes, galite naudoti tiesioginį langą.
Žemiau yra paprastas kodas, kuris pateikia pirmųjų 10 teigiamų sveikųjų skaičių sumą ir parodo rezultatą tiesioginiame lange.
Sub AddFirstTenNumbers () Dim Var kaip sveikasis skaičius Dim i Kaip sveikasis skaičius k k Kaip sveikasis skaičius i = 1–10 k = k + i Kitas i derinimas. Spausdinti i, k Pabaiga
Kai tik paleisite šį kodą, tiesioginiame lange pamatysite žemiau esantį rezultatą. Tai akimirksniu parodo, kad kodas veikia gerai ir duoda laukiamą rezultatą.
Jei jis neduoda laukiamų rezultatų, galite derinti kodą.
Daugelis žmonių derindami kodą naudoja pranešimų laukelį. Nors tai veikia gerai, manau, kad tai šiek tiek įkyriai, nes nuveda mane į „Excel“ darbaknygę ir parodo pranešimų laukelį. Kita vertus, tiesioginio lango naudojimas derinimui yra daug sklandesnis ir palaiko mane „Visual Basic“ redaktoriuje.
Pastaba: jei dirbate su sudėtingu kodu ir turite kelis kintamuosius, kuriuos turite stebėti, geriau naudoti stebėjimo langą. Žiūrėjimo langas leidžia pridėti kintamąjį ir tada galite pamatyti, kaip tas kintamasis keičiasi realiuoju laiku (arba einant per kodą).Derindami nustatykite kintamąją vertę
Tai yra šiek tiek išplėstinis „Neatidėliotino“ lango naudojimas, tačiau jei jį naudosite, tai gali sutaupyti daug laiko derinant kodą.
Galite naudoti tiesioginį langą, kad nustatytumėte kintamojo vertę, kai vykdote kodą derinimo režimu (kai nustatote lūžio tašką, kad kodas nebūtų vykdomas iki galo, bet iki konkrečios eilutės).
Pvz., Jei turite ciklą, kuris veikia 10 kartų ir norite patikrinti, kas nutinka, kai ciklas paleidžiamas aštuntą kartą, jums nereikia septynis kartus pereiti per ciklą, kad patektumėte į aštuntąsias iteracijas. Galite tiesiog pridėti lūžio tašką prieš kilpą ir pakeisti kilpos kintamąjį į 8. Dabar, kai paleisite kodą, jis parodys, kas nutinka, kai kilpos paleidžiamos 8 kartą.
Tai tampa daug naudingiau, kai rašote sudėtingus kodus ir norite derinti konkrečias kilpas.
Tarkime, kad turite kodą, kaip parodyta žemiau:
Sub UnhideSheets () i = 1 į darbalapius. Skaičiuoti derinimą. Spausdinti lapus (i). Pavadinimas Kitas i Pabaiga
Aukščiau pateiktas kodas tiesiog išvardija visų darbo knygos lapų lapų pavadinimus tiesioginiame lange.
Jei nenorite išvardyti visų lapų pavadinimų, o tik lapus po 10 -ojo lapo, galite įterpti lūžio tašką į antrąją ciklo eilutę (kad nieko po šios eilutės nebūtų įvykdyta) ir tada pakeisti kintamasis „i“ iki 11.
Norėdami pakeisti kintamojo pavadinimą tiesioginiame lange, įveskite šią eilutę:
i = 11
Tai užtikrins, kad pirmieji 10 ciklo kartų bus ignoruojami ir jūsų kintamoji vertė nustatyta į 11.
Neatidėliotino lango prijungimas/atrakinimas
Galite nedelsdami prijungti langą prie VB redaktoriaus - tai reiškia, kad jis lieka vienoje vietoje VB redaktoriuje ir juda bei keičiasi su juo.
Taip pat galite atjungti doką, o tai reiškia, kad jis nepriklauso nuo VB redaktoriaus ir gali būti perkeltas kaip atskiras langas.
Žemiau pateikiama informacija, kaip galite pakeisti tiesioginio lango prijungimo nustatymus:
- VB redaktoriaus meniu spustelėkite parinktį Įrankiai
- Spustelėkite „Parinktys“
- Dialogo lange Parinktys spustelėkite paskutinį skirtuką - prijungimas
- Pažymėkite parinktį Neatidėliotinas langas, kad ji būtų užfiksuota, ir panaikinkite žymėjimą, kad ji nebūtų užfiksuota.
- Spustelėkite Gerai
Arba, jei matomas tiesioginis langas, taip pat galite dešiniuoju pelės klavišu spustelėti ir pakeisti jo fiksavimo ypatybę.
Doktuojamas reiškia, kad tiesioginis langas, esant tam tikrose vietose, pavyzdžiui, kairėje arba apačioje, taps esamo lango dalimi. Tai leidžia prijungtiems langams judėti ir dydžiui kartu.
Neatidaromas langas - čia yra keletas būdų, kaip jį gauti
To priežastis gali būti kelios priežastys.
Dažniausia priežastis, dėl kurios nematote tiesioginio lango, yra ta, kad ji nebuvo matoma. Pagal numatytuosius nustatymus jis gali būti nematomas ir, kad jis būtų rodomas, turite eiti į meniu parinktį Rodinys ir spustelėti parinktį Iškart. Tai užtikrins, kad jis būtų matomas VB redaktoriuje.
Taip pat galite naudoti klaviatūrą „Control + G“, kad iškart pasirodytų langas. Naudokite šį spartųjį klavišą, kol esate VB redaktoriuje.
Kita priežastis, dėl kurios galite nematyti tiesioginio lango, yra ta, kad jis buvo sumažintas iki šiol taip uždarytas, kad jo nematote (kaip pranešta čia). Tiesiog greitai nuskaitykite ir patikrinkite, ar kažkur nematote mažos mėlynos/raudonos spalvos kvadrato. Galite užvesti pelės žymeklį virš jo ir pamatysite tam tikrą jo dydžio keitimo parinktį.
Jei išvis nematote tiesioginio lango, štai kažkas padėjo daugeliui žmonių (tai dažnai nutinka dėl ekrano skiriamosios gebos pokyčių):
- Atidarykite VB redaktorių
- Paspauskite Ctrl-G, kad sutelktumėte dėmesį į tiesioginį langą (arba meniu spustelėkite parinktį Rodinys, tada spustelėkite tiesioginį langą)
- Laikykite nuspaudę ALT klavišą, tada paspauskite tarpo klavišą. Tai parodys tiesioginio lango išskleidžiamąsias parinktis.
- Paspauskite M (norėdami perkelti)
- Rodyklių klavišais perkelkite langą
- Kai suprasite, kur jis yra, padidinkite
Aš tai gavau iš čia esančio forumo ir taip pat pastebėjau tą patį pasiūlymą kaip sprendimą, kad VBA neatidaromas langas.
Kitas dalykas, kurį galite pabandyti, yra tiesioginio lango panaikinimas (eikite į Įrankiai -> Parinktys -> Dokavimas ir panaikinkite tiesioginio lango parinkties žymėjimą). Kai kuriems žmonėms tai pavyko.
Jums taip pat gali patikti šie straipsniai:
- „Excel“ asmeninės makrokomandos darbaknygė | Išsaugokite ir naudokite makrokomandas visose darbaknygėse
- „Excel VBA“ kilpos: toliau, darykite, darykite iki, kiekvienam (su pavyzdžiais)
- Darbas su darbalapiais naudojant „Excel VBA“
- Vartotojo apibrėžtos funkcijos (UDF) kūrimas „Excel VBA“